Namensbereiche | Klassen | Makrodefinitionen | Typdefinitionen | Aufzählungen | Aufzählungswerte | Funktionen | Variablen | Freundbeziehungen
Basic event routing functions

This group contains functions and classes that can be used to set up a generic event routing. Mehr ...

Zusammengehörigkeiten von Basic event routing functions:

Namensbereiche

 mutabor
 not for headers
 
 mutaborGUI
 not for headers
 
 mutabor::hidden
 
 mutabor::box_support
 
 compat30
 

Klassen

class  mutabor::watchdog< T >
 A watchdog timer class. Mehr ...
 
class  mutabor::BoxClass::tone
 
struct  mutabor::BoxClass::ChangedCallback
 
struct  mutabor::BoxClass::logic_entry
 
struct  mutabor::BoxClass::current_tone_entry
 
struct  mutabor::BoxClass::CompileCallback
 
struct  mutabor::BoxClass::BoxLock
 
struct  mutabor::BoxClass::scoped_watchdog
 
class  mutabor::BoxClass::set_callback
 
class  mutabor::BoxClass
 
struct  mutabor::BoxFactory::BoxNotCreated
 
struct  mutabor::BoxFactory::FactoryNotFound
 
struct  mutabor::BoxFactory::factorylist
 
class  mutabor::BoxFactory
 
class  mutabor::ScopedBox
 
struct  mutabor::box_support::tone_entry
 
struct  mutabor::box_support::tone_system
 
class  mutabor::ChannelData
 
class  mutabor::Device
 
class  mutabor::CommonTypedDeviceAPI< T, P, L >
 
class  mutabor::OutputDeviceClass
 
struct  mutabor::InputDeviceClass::current_keys_type::entry
 
struct  mutabor::InputDeviceClass::current_keys_type::hash_type
 
struct  mutabor::InputDeviceClass::current_keys_type
 
class  mutabor::InputDeviceClass
 
struct  mutabor::DeviceFactory::DeviceNotCreated
 
struct  mutabor::DeviceFactory::FactoryNotFound
 
struct  mutabor::DeviceFactory::factorylist
 
class  mutabor::DeviceFactory
 
class  mutabor::ScopedInputDevice
 
class  mutabor::ScopedOutputDevice
 
class  GisToken
 
class  GisSequenz
 
class  GisSegment
 
class  GisTag
 
class  GisTagBegin
 
class  GisTagEnd
 
class  GisNote
 
class  GisParaInt
 
class  GisParaReal
 
class  GisParaStr
 
class  GisComma
 
class  GisReadHead
 
struct  TagListData
 
class  GisReadArtHead
 
class  GisWriteHead
 
class  ChordNote
 
struct  MyCompileCallback
 
class  InputMidiFileTest
 not for headers Mehr ...
 
class  OutputMidiFileTest
 
class  midicmnOutputDevice
 not for headers Mehr ...
 
class  CommonMidiOutputTest
 
class  midicmnInputDevice
 
class  CommonMidiInputTest
 
class  mutabor::TRouteClass< I, O, B >::NoOutputDevice
 
class  mutabor::TRouteClass< I, O, B >::NoInputDevice
 
class  mutabor::TRouteClass< I, O, B >
 Class for managing routing. Mehr ...
 
struct  mutabor::RouteFactory::FactoryAlreadySet
 Douplicate route factory exception. Mehr ...
 
struct  mutabor::RouteFactory::RouteFactoryNotSet
 
class  mutabor::RouteFactory
 Class for creation of Routes. Mehr ...
 
class  mutabor::ScopedRoute
 
class  compat30::RouteIOError
 
class  ScopedLock< M >
 
class  Mutex< M >
 
class  ScopedUnlock< M >
 
class  ThreadCondition< M >
 
class  ScopedCondLock< dolock, M >
 
struct  ScopedCondLock< false, M >
 
class  ThreadSignal< T, M, C >
 
class  Thread
 
class  safe_integer< T >
 

Makrodefinitionen

#define ROUTING_BOX_INLINES
 
#define ROUTING_BOX_INLINES_PRECOMPILED
 
#define ROUTING_BOX_H
 
#define HIDE_MUTABOR_C_API
 
#define ROUTING_BOX_H_PRECOMPILED
 
#define _GNU_SOURCE   1
 
#define ROUTING_BOX_SUPPORT_H
 
#define HIDE_MUTABOR_C_API
 
#define ROUTING_BOX_SUPPORT_H_PRECOMPILED
 
#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H
 
#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H_PRECOMPILED
 
#define ROUTING_DEVICE_INLINES
 
#define ROUTING_DEVICE_INLINES_PRECOMPILED
 
#define MU32_ROUTING_DEVICE_H
 
#define MU32_ROUTING_DEVICE_H_PRECOMPILED
 
#define DRUMCHANNEL   9
 
#define DeviceMaxType   DTGis+1
 
#define SRC_KERNEL_ROUTING_EVENT_H
 
#define SRC_KERNEL_ROUTING_EVENT_H_PRECOMPILED
 
#define MMSYSTEM_H
 
#define MU32_ROUTING_GMN_DEVGIS_H
 
#define MU32_ROUTING_GMN_DEVGIS_H_PRECOMPILED
 
#define strdupchr(a)   (a)
 
#define AddStr(s1, s2, s3)   (s1 += s2 + s3)
 
#define MU32_ROUTING_GMN_GIS_H
 
#define MU32_ROUTING_GMN_GIS_H_PRECOMPILED
 
#define FOR_MUTWIN
 
#define CHECKDUP(target, source)   target = source;
 
#define NTAGS   52
 
#define NTAGSHORTS   6
 
#define TTintens   1
 
#define TTslur   2
 
#define TTtempo   12
 
#define TTinstr   19
 
#define TTtie   20
 
#define TTstacc   21
 
#define TTaccent   22
 
#define TTten   23
 
#define TTkey   36
 
#define TToct   37
 
#define TTalter   50
 
#define TTmutabor   51
 
#define GMN_NO_KEY   -32000
 
#define ZIFFER   (('0') <= t[i] && t[i] <= ('9'))
 
#define TAG   ((GisTag*)Cursor)
 
#define TAGEND   ((GisTagEnd*)Cursor)
 
#define NOTE1   ((GisNote*)note1)
 
#define NOTE2   ((GisNote*)note2)
 
#define NOTE   ((GisNote*)note)
 
#define WTAG   ((GisTag*)(*Cursor))
 
#define WTAGEND   ((GisTagEnd*)token)
 
#define MU32_ROUTING_GMN_GIS_HEAD_H
 
#define MU32_ROUTING_GMN_GIS_HEAD_H_PRECOMPILED
 
#define CNAlter   1
 
#define CNNoteOn   2
 
#define SepPos   SepPos()
 
#define BracketDeep   (Brackets.length())
 
#define NEW_LINE   "\n"
 
#define uchar   unsigned char
 
#define CHAR0   CurrentLine[CurrentPos]
 
#define CHAR1   CurrentLine[CurrentPos+1]
 
#define TAKESEP   takesep()
 
#define MU32_ROUTING_GMN_GSP_H
 
#define MU32_ROUTING_GMN_GSP_H_PRECOMPILED
 
#define MU32_ROUTING_GMN_GSP_FILE_H
 
#define MU32_ROUTING_GMN_GSP_FILE_H_PRECOMPILED
 
#define MU32_ROUTING_MIDI_DEVMIDF_H
 
#define MU32_ROUTING_MIDI_DEVMIDF_H_PRECOMPILED
 
#define MU32_ROUTING_MIDI_DEVMIDI_H
 
#define MU32_ROUTING_MIDI_DEVMIDI_H_PRECOMPILED
 
#define ROUTING_MIDICMN_H
 
#define ROUTING_MIDICMN_H_PRECOMPILED
 
#define DEFAULT_BENDING_RANGE   2l
 
#define DEVFMIDFTEST_H
 
#define DEVFMIDFTEST_H_PRECOMPILED
 
#define MIDICMNTEST_H
 
#define MIDICMNTEST_H_PRECOMPILED
 
#define MU32_ROUTING_ROUTE_INLINES_H
 
#define MU32_ROUTING_ROUTE_INLINES_H_PRECOMPILED
 
#define READCONFIGSTR(config, name, variable, defval)
 
#define READCONFIGINT(config, name, variable, defval)
 
#define MU32_ROUTING_ROUTE_H
 
#define MU32_ROUTING_ROUTE_H_PRECOMPILED
 
#define MU32_ROUTING_ROUTECOMPAT_H
 
#define MU32_ROUTING_ROUTECOMPAT_H_PRECOMPILED
 
#define SRC_KERNEL_ROUTING_THREAD_H
 
#define SRC_KERNEL_ROUTING_THREAD_H_PRECOMPILED
 
#define ROUTING_TIMINGPARAMS
 
#define ROUTING_TIMINGPARAMS_PRECOMPILED
 
#define SRC_KERNEL_ROUTING_WATCHDOG_H
 
#define SRC_KERNEL_ROUTING_WATCHDOG_H_PRECOMPILED
 

Typdefinitionen

typedef struct keyboard_ereignis mutabor::hidden::keyboard_action
 
typedef struct midi_ereignis mutabor::hidden::midi_action
 
typedef struct harmonie_ereignis mutabor::hidden::harmony_action
 
typedef hidden::mutabor_error_type mutabor::error_type
 
typedef boost::intrusive_ptr< BoxClassmutabor::Box
 
typedef std::vector< Boxmutabor::BoxListType
 
typedef hidden::mutabor_tone mutabor::BoxClass::tone::base
 
typedef tone mutabor::BoxClass::interval
 
typedef mutabor::hidden::do_aktion mutabor::BoxClass::ChangedCallback::action
 
typedef BoxListType mutabor::BoxClass::listtype
 
typedef std::list< logic_entrymutabor::BoxClass::logic_list
 
typedef std::vector< current_tone_entrymutabor::BoxClass::current_tone_list
 
typedef std::vector< BoxFactory * > mutabor::BoxFactory::factorylist::base
 
typedef std::vector< tone_entrymutabor::box_support::tone_list
 
typedef std::vector< uint8_t > mutabor::midi_string
 
typedef std::vector< int > mutabor::ChannelData::controller_vector
 
typedef T mutabor::CommonTypedDeviceAPI< T, P, L >::thistype
 
typedef P mutabor::CommonTypedDeviceAPI< T, P, L >::DevicePtr
 
typedef L mutabor::CommonTypedDeviceAPI< T, P, L >::listtype
 
typedef CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr mutabor::OutputDevice
 
typedef CommonTypedDeviceAPI< OutputDeviceClass >::listtype mutabor::OutputDeviceList
 
typedef std::set< OutputDevicemutabor::OutputDeviceSet
 
typedef CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr mutabor::InputDevice
 
typedef CommonTypedDeviceAPI< InputDeviceClass >::listtype mutabor::InputDeviceList
 
typedef boost::unordered_multiset< entry, hash_typemutabor::InputDeviceClass::current_keys_type::map_type
 
typedef map_type::iterator mutabor::InputDeviceClass::current_keys_type::iterator
 
typedef map_type::const_iterator mutabor::InputDeviceClass::current_keys_type::const_iterator
 
typedef std::vector< DeviceFactory * > mutabor::DeviceFactory::factorylist::base
 
typedef void GisReadProceed(GisReadHead *, char)
 
typedef struct TagListData TagList
 
typedef void GisReadArtProceed(GisReadArtHead *token, char turn)
 
typedef boost::intrusive_ptr< event_classmutabor::event
 
typedef TRouteClass mutabor::TRouteClass< I, O, B >::thistype
 
typedef I mutabor::TRouteClass< I, O, B >::InputDevice
 
typedef O mutabor::TRouteClass< I, O, B >::OutputDevice
 
typedef B mutabor::TRouteClass< I, O, B >::Box
 
typedef boost::intrusive_ptr< TRouteClassmutabor::TRouteClass< I, O, B >::Route
 
typedef cow_container< std::vector< Route > > mutabor::TRouteClass< I, O, B >::routeListType
 
typedef TRouteClass< InputDevice, OutputDevice, Box >::Route mutabor::Route
 
typedef TRouteClass< InputDevice, OutputDevice, Boxmutabor::RouteClass
 
typedef TRouteClass< InputDevice, OutputDevice, Box >::routeListType mutabor::routeListType
 
typedef int ThreadResult
 
typedef int WaitResult
 

Aufzählungen

enum  mutabor::BoxType {
  mutabor::MIN_BOX = -3, mutabor::NewBox = -3, mutabor::NoBox, mutabor::GmnBox,
  mutabor::Box0 = 0
}
 
enum  mutabor::BoxClass::interval_type_constants {
  mutabor::BoxClass::invalid_interval = hidden::mutabor_invalid_interval, mutabor::BoxClass::active_interval = hidden::mutabor_active_interval, mutabor::BoxClass::empty_interval = hidden::mutabor_empty_interval, mutabor::BoxClass::invalid_tone = hidden::mutabor_invalid_tone,
  mutabor::BoxClass::active_tone = hidden::mutabor_active_tone, mutabor::BoxClass::empty_tone = hidden::mutabor_empty_tone
}
 
enum  mutabor::BoxClass::boxidtype { mutabor::BoxClass::IDTypeSession, mutabor::BoxClass::IDTypeFile }
 
enum  mutabor::BoxClass::ChangedCallback::ChangedFlags { mutabor::BoxClass::ChangedCallback::BoxChanged = 1, mutabor::BoxClass::ChangedCallback::LogicChanged = 2, mutabor::BoxClass::ChangedCallback::KeysChanged = 4, mutabor::BoxClass::ChangedCallback::ActionChanged = 8 }
 
enum  { mutabor::BoxClass::logic_entry::none, mutabor::BoxClass::logic_entry::Logic, mutabor::BoxClass::logic_entry::CurrentLogic }
 
enum  mutabor::BoxClass::KeyboardFlags { mutabor::BoxClass::KeyboardNoLogic, mutabor::BoxClass::KeyboardLogic, mutabor::BoxClass::KeyboardAny }
 
enum  { mutabor::OpenAllBoxes = 0x01, mutabor::OpenAllOutDevices = 0x02, mutabor::OpenAllInDevices = 0x04 }
 
enum  { mutabor::box_support::tone_entry::sounding, mutabor::box_support::tone_entry::silent, mutabor::box_support::tone_entry::invalid }
 
enum  mutabor::MutaborModeType {
  mutabor::DeviceUnregistered = -1, mutabor::DeviceInitializing, mutabor::DeviceStop, mutabor::DevicePlay,
  mutabor::DevicePause, mutabor::DeviceCompileError, mutabor::DeviceTimingError, mutabor::DeviceKilled
}
 
enum  mutabor::DevType {
  mutabor::DTNotSet = -1, mutabor::DTUnknown, mutabor::DTMidiPort, mutabor::DTMidiFile,
  mutabor::DTGis
}
 
enum  mutabor::Device::devidtype { mutabor::Device::IDTypeSession, mutabor::Device::IDTypeFile, mutabor::Device::IDTypeHardware }
 
enum  GisType {
  GTNull, GTUnknown, GTSequenz, GTSegment,
  GTTag, GTTagBegin, GTTagEnd, GTNote,
  GTParaInt, GTParaReal, GTParaStr, GTComma
}
 
enum  ARType {
  ARNormal, ARSlur, ARTenuto, ARPortato,
  ARStaccatto
}
 
enum  mutabor::RouteType { mutabor::RTall, mutabor::RTelse, mutabor::RTchannel, mutabor::RTstaff }
 Type of route input filter. Mehr ...
 
enum  ThreadKind
 

Funktionen

 MUTABOR_NAMESPACE (mutabor) inline void BoxClass
 not for headers Mehr ...
 
bool is_key_trigger (struct any_trigger &trigger)
 
bool is_harmony_trigger (struct any_trigger &trigger)
 
bool is_midi_trigger (struct any_trigger &trigger)
 
keyboard_action * get_key_trigger (struct any_trigger &trigger)
 
harmony_action * get_harmony_trigger (struct any_trigger &trigger)
 
midi_action * get_midi_trigger (struct any_trigger &trigger)
 
const char * mutabor::to_string (error_type type)
 
 mutabor::BoxClass::tone::tone ()
 
 mutabor::BoxClass::tone::tone (base t)
 
 mutabor::BoxClass::tone::tone (int inkey)
 
bool mutabor::BoxClass::tone::is_ok ()
 
bool mutabor::BoxClass::tone::is_active ()
 
bool mutabor::BoxClass::tone::is_empty ()
 
interval_type_constants mutabor::BoxClass::tone::get_type () const
 
static constexpr long mutabor::BoxClass::tone::get_semitone ()
 
static constexpr long mutabor::BoxClass::tone::get_quartertone ()
 
long mutabor::BoxClass::tone::get_bend () const
 Return the microtonal part of the in fixed point integer format. Mehr ...
 
long mutabor::BoxClass::tone::get_pitch () const
 
mutint64 mutabor::BoxClass::tone::get_value () const
 
void mutabor::BoxClass::tone::add_value (mutint64 &retval) const
 
bool mutabor::BoxClass::tone::operator== (const tone &t) const
 
 mutabor::BoxClass::ChangedCallback::ChangedCallback (Box &b)
 
 mutabor::BoxClass::ChangedCallback::~ChangedCallback ()
 
virtual void mutabor::BoxClass::ChangedCallback::SetBox (Box &b)
 
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction (int flags)=0
 
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction (const char *mutUNUSED(action))
 
virtual mutabor::BoxClass::~BoxClass ()
 
size_t mutabor::BoxClass::get_session_id () const
 
virtual BoxType mutabor::BoxClass::GetType ()
 
virtual std::string mutabor::BoxClass::GetTypeName ()
 
virtual std::string mutabor::BoxClass::GetLabel ()
 
bool mutabor::BoxClass::IsNormal ()
 
int mutabor::BoxClass::get_routefile_id () const
 
virtual void mutabor::BoxClass::set_routefile_id (int id)
 
static int mutabor::BoxClass::GetNextFreeBox ()
 
virtual void mutabor::BoxClass::Save (tree_storage &config)
 Save current device settings in a tree storage. Mehr ...
 
virtual void mutabor::BoxClass::Save (tree_storage &config, const RouteClass *route)
 Save route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::BoxClass::Load (tree_storage &config)
 Load current device settings from a tree storage. Mehr ...
 
virtual void mutabor::BoxClass::Load (tree_storage &config, RouteClass *route)
 Load route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::BoxClass::Add (Route &route)
 add a route Mehr ...
 
virtual bool mutabor::BoxClass::Replace (Route &oldRoute, Route &newRoute)
 replace a route Mehr ...
 
virtual bool mutabor::BoxClass::Remove (Route &route)
 remove a route Mehr ...
 
virtual bool mutabor::BoxClass::MoveRoutes (Box &newclass)
 Move routes to another device. Mehr ...
 
const routeListTypemutabor::BoxClass::GetRoutes () const
 
routeListTypemutabor::BoxClass::GetRoutes ()
 
static const listtypemutabor::BoxClass::GetBoxList ()
 
static Box mutabor::BoxClass::GetBox (int id, boxidtype kind)
 Scan the list of Boxes for a given id. Mehr ...
 
static Box mutabor::BoxClass::GetOrCreateBox (int id)
 Return the box that is associated with the corrent id. Mehr ...
 
virtual int mutabor::BoxClass::MoveInList (int count)
 Move the box in the box list. Mehr ...
 
static void mutabor::BoxClass::ClearBoxList ()
 
virtual void mutabor::BoxClass::DisconnectFromAll ()
 Disconnect the device from all pairings with routes GUI data or something else. Mehr ...
 
virtual void mutabor::BoxClass::Panic (int type)
 reset the device if requested Mehr ...
 
virtual void mutabor::BoxClass::Panic (Route r, int type)
 
virtual void mutabor::BoxClass::Panic (Route r, int type, size_t unique_id)
 
virtual void mutabor::BoxClass::Reset ()
 
bool mutabor::BoxClass::Open ()
 
void mutabor::BoxClass::Close ()
 
virtual bool mutabor::BoxClass::DoOpen ()
 
virtual void mutabor::BoxClass::DoClose ()
 
bool mutabor::BoxClass::IsOpen ()
 
static void mutabor::BoxClass::CloseAll ()
 Close all boxes. Mehr ...
 
static bool mutabor::BoxClass::ActivateAll (bool isRealtime)
 Activate all boxes. Mehr ...
 
static void mutabor::BoxClass::StopAll ()
 Stop all boxes. Mehr ...
 
logic_list mutabor::BoxClass::GetLogics ()
 Get a list of currently defined logics. Mehr ...
 
box_support::tone_system mutabor::BoxClass::GetToneSystem ()
 
 mutabor::BoxClass::current_tone_entry::current_tone_entry ()
 
 mutabor::BoxClass::current_tone_entry::current_tone_entry (int ind, double p, size_t i, int c)
 
current_tone_list mutabor::BoxClass::GetCurrentTones ()
 
virtual void mutabor::BoxClass::CompileCallback::RefreshDlg ()=0
 
virtual void mutabor::BoxClass::CompileCallback::SetStatus (std::string status)=0
 
virtual void mutabor::BoxClass::CompileCallback::SetMessage (std::string message)=0
 
virtual void mutabor::BoxClass::CompileCallback::SetStatus (int logics, int tones, int tunings, int tone_systems, int intervals, int characters)=0
 
virtual void mutabor::BoxClass::CompileCallback::SetLine (int number)=0
 
bool mutabor::BoxClass::Compile (CompileCallback *callback, const char *logic)
 
static void mutabor::BoxClass::compile_callback (mutabor_box_type *b, int line_number)
 
void mutabor::BoxClass::MidiAnalysis (const std::vector< unsigned char > &midiCode)
 
void mutabor::BoxClass::MidiOut (struct midiliste *outliste)
 
static void mutabor::BoxClass::MidiOutCallback (mutabor::hidden::mutabor_box_type *b, struct mutabor::hidden::midiliste *outliste)
 
void mutabor::BoxClass::UpdateTones ()
 Update the currently playing tones to the current tone system. Mehr ...
 
int mutabor::BoxClass::GetChannel (int key, size_t channel, size_t id)
 Get the MIDI channel of a given tone. Mehr ...
 
void mutabor::BoxClass::AddNote (int note, size_t id, size_t channel, void *userdata)
 
void mutabor::BoxClass::DeleteNote (int note, size_t id, int channel)
 
bool mutabor::BoxClass::IsLogicKey (int key)
 
void mutabor::BoxClass::KeyboardAnalysis (int key, KeyboardFlags flags)
 Execute the action associated with a key that is pressed on the computer keyboard. Mehr ...
 
void mutabor::BoxClass::KeyboardAnalysis (const std::string keys)
 Execute the actions that are associated with the characters of a string. Mehr ...
 
tone mutabor::BoxClass::get_frequency (int note)
 
int mutabor::BoxClass::get_index (int note)
 
int mutabor::BoxClass::get_distance (int note)
 
void mutabor::BoxClass::interrupt_logic (bool allow_resume=true)
 Break the execution of any running logic loops. Mehr ...
 
void mutabor::BoxClass::resume_logic ()
 Allow the execution of logic actions after this function has been disabled. Mehr ...
 
void mutabor::BoxClass::SetLogic (Box b)
 
virtual void mutabor::BoxClass::Activate ()
 Activate the current box. Mehr ...
 
virtual void mutabor::BoxClass::Destroy ()
 Destroy the current object. Mehr ...
 
static void mutabor::BoxClass::InitializeIds ()
 Initialize the internal device identifiers. Mehr ...
 
 mutabor::BoxClass::operator std::string () const
 
virtual void mutabor::BoxClass::runtime_error (error_type type, const char *message)
 Process an error message (doing the real work) Mehr ...
 
void mutabor::BoxClass::issue_error (error_type type, const char *format,...)
 Format and process a runtime error message or warning. Mehr ...
 
virtual const std::string mutabor::BoxClass::get_errors ()
 Return the collected errors and warnings. Mehr ...
 
std::string mutabor::BoxClass::ActionToString (ChangedCallback::action *action)
 
static void mutabor::BoxClass::log_action (mutabor_box_type *box, const char *action)
 
static void mutabor::BoxClass::UpdateCallback (mutabor_box_type *b, unsigned int flags)
 
static void mutabor::BoxClass::lock_callback (hidden::mutabor_logic_parsed *logic)
 
static void mutabor::BoxClass::unlock_callback (hidden::mutabor_logic_parsed *logic)
 
static void mutabor::BoxClass::free_mutex_callback (hidden::mutabor_logic_parsed *logic)
 
void mutabor::BoxClass::dog_watching ()
 
template<class T >
void mutabor::BoxClass::remove_watchdog (T dog)
 
 mutabor::BoxClass::BoxLock::BoxLock (BoxClass *b)
 
 mutabor::BoxClass::BoxLock::~BoxLock ()
 
 mutabor::BoxClass::scoped_watchdog::scoped_watchdog (BoxClass *b)
 
 mutabor::BoxClass::scoped_watchdog::~scoped_watchdog ()
 
 mutabor::BoxClass::set_callback::set_callback (BoxClass *b, CompileCallback *callback)
 
 mutabor::BoxClass::set_callback::~set_callback ()
 
 mutabor::BoxClass::BoxClass (int id=-1)
 
void mutabor::BoxClass::Register (ChangedCallback *callback)
 
void mutabor::BoxClass::Unregister (ChangedCallback *callback)
 
void mutabor::BoxClass::ExecuteCallbacks (unsigned int flags)
 
void mutabor::BoxClass::ExecuteCallbacks (const char *action)
 
static void mutabor::BoxClass::AppendToBoxList (Box dev)
 
static void mutabor::BoxClass::RemoveFromBoxList (Box dev)
 
static listtype::iterator mutabor::BoxClass::FindInBoxList (Box b)
 
static bool mutabor::BoxClass::IsInBoxList (const Box b)
 
static void mutabor::BoxClass::TruncateBoxList (Box dev)
 
 mutabor::BoxFactory::FactoryNotFound::FactoryNotFound (int i)
 
virtual mutabor::BoxFactory::FactoryNotFound::~FactoryNotFound () throw ()
 
virtual const char * mutabor::BoxFactory::FactoryNotFound::what (void) const throw ()
 Returns the thrown error message as a c-style string. Mehr ...
 
 mutabor::BoxFactory::BoxFactory (size_t id=0)
 
virtual mutabor::BoxFactory::~BoxFactory ()
 
static Box mutabor::BoxFactory::Create (int type, int id=NewBox)
 
static void mutabor::BoxFactory::Destroy ()
 
static void mutabor::BoxFactory::LoadBoxes (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::BoxFactory::SaveBoxes (tree_storage &config)
 write the routes to the configuration Mehr ...
 
 mutabor::BoxFactory::factorylist::factorylist ()
 
 mutabor::BoxFactory::factorylist::~factorylist ()
 
virtual size_t mutabor::BoxFactory::GetType () const
 
virtual BoxClassmutabor::BoxFactory::DoCreateBox (int id=-1) const
 
virtual void mutabor::BoxFactory::DoLoadBoxes (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::BoxFactory::DoSaveBoxes (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
 mutabor::ScopedBox::~ScopedBox ()
 
 mutabor::ScopedBox::ScopedBox (BoxClass *rhs)
 
 mutabor::ScopedBox::ScopedBox (const Box &rhs)
 
ScopedBoxmutabor::ScopedBox::operator= (BoxClass *rhs)
 
ScopedBoxmutabor::ScopedBox::operator= (const Box &rhs)
 
void mutabor::Panic (int type)
 
void mutabor::BoxClose ()
 
bool mutabor::OpenAll (int mode)
 
void mutabor::initialize_box_data ()
 
 mutabor::box_support::tone_entry::tone_entry (double p)
 
 mutabor::box_support::tone_entry::tone_entry ()
 
 mutabor::ChannelData::ChannelData (int sound=-1)
 
 mutabor::ChannelData::~ChannelData ()
 
void mutabor::ChannelData::Reset ()
 
void mutabor::ChannelData::MidiReset ()
 Reset the controllers according to the MIDI standard. Mehr ...
 
int mutabor::ChannelData::set_controller (size_t number, int data)
 
int mutabor::ChannelData::get_index (int message)
 
int mutabor::ChannelData::get_controller (size_t number) const
 
bool mutabor::ChannelData::get_hold () const
 Check whether one of the hold switches is active. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller () const
 Get the first changed controller. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller (const ChannelData &other) const
 Get the first changed controller that differs from the corresponding controller in another channel. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller (controller_vector::const_iterator last) const
 Get the first changed controller. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller (const ChannelData &other, controller_vector::const_iterator last) const
 Get the first changed controller that differs from the corresponding controller in another channel. Mehr ...
 
bool mutabor::ChannelData::is_changed_controller (controller_vector::const_iterator actual) const
 
void mutabor::ChannelData::program_change (int program)
 
void mutabor::ChannelData::program_change (const ChannelData &o)
 
bool mutabor::ChannelData::is_compatible (const ChannelData &cd) const
 
int mutabor::ChannelData::get_bend ()
 
void mutabor::ChannelData::set_bend (int b)
 
int mutabor::ChannelData::get_program () const
 
int mutabor::ChannelData::get_bank_coarse () const
 
int mutabor::ChannelData::get_bank_fine () const
 
virtual mutabor::Device::~Device ()
 
virtual void mutabor::Device::Save (tree_storage &config)=0
 Save current device settings in a tree storage. Mehr ...
 
virtual void mutabor::Device::Save (tree_storage &config, const RouteClass *route)=0
 Save route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::Device::Load (tree_storage &config)=0
 Load current device settings from a tree storage. Mehr ...
 
virtual void mutabor::Device::Load (tree_storage &config, RouteClass *route)=0
 Load route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::Device::Add (Route &route)=0
 add a route Mehr ...
 
virtual bool mutabor::Device::Replace (Route &oldRoute, Route &newRoute)=0
 replace a route Mehr ...
 
virtual bool mutabor::Device::Remove (Route &route)=0
 remove a route Mehr ...
 
virtual void mutabor::Device::Panic (int type)=0
 reset the device if requested Mehr ...
 
virtual void mutabor::Device::Play ()
 Start playback or recording of the device. Mehr ...
 
virtual void mutabor::Device::Pause ()
 Pause playback or recording of the device. Mehr ...
 
virtual void mutabor::Device::Stop ()
 Stop playback or recording of the device. Mehr ...
 
virtual void mutabor::Device::SetMode (MutaborModeType m)
 
MutaborModeType mutabor::Device::GetMode ()
 
virtual void mutabor::Device::runtime_error (int type, const std::string &message)
 Process an error message (doing the real work) Mehr ...
 
const std::stringmutabor::Device::GetName () const
 
virtual void mutabor::Device::SetName (const std::string &s)
 
size_t mutabor::Device::get_session_id () const
 
int mutabor::Device::get_routefile_id () const
 
virtual std::string mutabor::Device::GetTypeName () const
 
virtual bool mutabor::Device::Open ()=0
 
virtual void mutabor::Device::Close ()=0
 
bool mutabor::Device::IsDirty () const
 
void mutabor::Device::Dirty (bool d=true)
 
bool mutabor::Device::IsOpen () const
 
virtual mutabor::Device::operator std::string () const
 
 mutabor::Device::Device (const std::string &name="", int id=-1)
 
virtual void mutabor::Device::setUserData (void *data)
 
virtual void * mutabor::Device::getUserData () const
 
void mutabor::Device::set_routefile_id (int id)
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI ()
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI (const std::string &name, int id=-1)
 
virtual mutabor::CommonTypedDeviceAPI< T, P, L >::~CommonTypedDeviceAPI ()
 
virtual void mutabor::CommonTypedDeviceAPI< T, P, L >::Destroy ()
 Destroy the current object. Mehr ...
 
virtual void mutabor::CommonTypedDeviceAPI< T, P, L >::DisconnectFromAll ()
 Disconnect the device from all pairings with routes GUI data or something else. Mehr ...
 
virtual void mutabor::CommonTypedDeviceAPI< T, P, L >::Add (Route &route)
 add a route Mehr ...
 
virtual bool mutabor::CommonTypedDeviceAPI< T, P, L >::Replace (Route &oldroute, Route &newroute)
 replace a route Mehr ...
 
virtual bool mutabor::CommonTypedDeviceAPI< T, P, L >::Remove (Route &route)
 remove a route Mehr ...
 
virtual bool mutabor::CommonTypedDeviceAPI< T, P, L >::MoveRoutes (DevicePtr &newclass)
 Move routes to another device. Mehr ...
 
size_t mutabor::CommonTypedDeviceAPI< T, P, L >::nRoutes ()
 
const routeListTypemutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes () const
 
routeListTypemutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes ()
 
static const listtypemutabor::CommonTypedDeviceAPI< T, P, L >::GetDeviceList ()
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::InitializeIds ()
 Initialize the internal device identifiers. Mehr ...
 
static DevicePtr mutabor::CommonTypedDeviceAPI< T, P, L >::GetDevice (int id, devidtype kind)
 Scan the list of input devices for a given id. Mehr ...
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::operator const thistype & () const
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::operator thistype & ()
 
thistypemutabor::CommonTypedDeviceAPI< T, P, L >::thisptr ()
 
const thistypemutabor::CommonTypedDeviceAPI< T, P, L >::thisptr () const
 
virtual int mutabor::CommonTypedDeviceAPI< T, P, L >::MoveInList (int count)
 Move the device in the device list. Mehr ...
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::ClearDeviceList ()
 
virtual mutabor::CommonTypedDeviceAPI< T, P, L >::operator std::string () const
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::AppendToDeviceList (DevicePtr dev)
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::RemoveFromDeviceList (DevicePtr dev)
 
static listtype::iterator mutabor::CommonTypedDeviceAPI< T, P, L >::FindInDeviceList (DevicePtr dev)
 
static bool mutabor::CommonTypedDeviceAPI< T, P, L >::IsInDeviceList (const DevicePtr dev)
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::TruncateDeviceList (DevicePtr dev)
 
virtual mutabor::OutputDeviceClass::~OutputDeviceClass ()
 
void mutabor::OutputDeviceClass::NoteOn (Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
 
void mutabor::OutputDeviceClass::NoteOff (Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)
 
void mutabor::OutputDeviceClass::UpdateTones (RouteClass *route)
 
void mutabor::OutputDeviceClass::Controller (size_t mutabor_channel, int controller, int value, size_t id)
 
int mutabor::OutputDeviceClass::GetChannel (int inkey, size_t channel, size_t id)
 
void mutabor::OutputDeviceClass::Gis (GisToken *token, char turn)
 
void mutabor::OutputDeviceClass::AddTime (frac time)
 
void mutabor::OutputDeviceClass::MidiOut (mutabor::Box box, midi_string data)
 
void mutabor::OutputDeviceClass::MidiOut (uint8_t *p, size_t n)
 
void mutabor::OutputDeviceClass::handle_event (event e)
 
static void mutabor::OutputDeviceClass::all_handle_event (event e)
 
void mutabor::OutputDeviceClass::Quiet (Route r, int type)
 
void mutabor::OutputDeviceClass::Quiet (Route r, int type, size_t id)
 
void mutabor::OutputDeviceClass::Panic (int type)
 reset the device if requested Mehr ...
 
void mutabor::OutputDeviceClass::Close ()
 
void mutabor::OutputDeviceClass::Close (bool sync)
 
bool mutabor::OutputDeviceClass::Open ()
 
virtual bool mutabor::OutputDeviceClass::NeedsRealTime ()
 
virtual DevType mutabor::OutputDeviceClass::GetType () const
 
virtual std::string mutabor::OutputDeviceClass::GetTypeName () const
 
virtual mutabor::OutputDeviceClass::operator std::string () const
 
 mutabor::OutputDeviceClass::OutputDeviceClass ()
 
 mutabor::OutputDeviceClass::OutputDeviceClass (const std::string &name, int id=-1)
 
virtual void mutabor::OutputDeviceClass::do_NoteOn (Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)=0
 Really Send the beginning of a sounding note. Mehr ...
 
virtual void mutabor::OutputDeviceClass::do_NoteOff (Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)=0
 
virtual void mutabor::OutputDeviceClass::do_UpdateTones (RouteClass *route)=0
 
virtual void mutabor::OutputDeviceClass::do_Controller (size_t mutabor_channel, int controller, int value, size_t id)=0
 
virtual int mutabor::OutputDeviceClass::do_GetChannel (int inkey, size_t channel, size_t id)=0
 
virtual void mutabor::OutputDeviceClass::do_Gis (GisToken *token, char turn)=0
 
virtual void mutabor::OutputDeviceClass::do_AddTime (frac time)=0
 
virtual void mutabor::OutputDeviceClass::do_MidiOut (mutabor::Box box, midi_string data)=0
 
virtual void mutabor::OutputDeviceClass::do_MidiOut (uint8_t *p, size_t n)=0
 
virtual void mutabor::OutputDeviceClass::do_handle_event (event e)=0
 
virtual void mutabor::OutputDeviceClass::do_Quiet (Route r, int type)=0
 
virtual void mutabor::OutputDeviceClass::do_Quiet (Route r, int type, size_t id)=0
 
virtual void mutabor::OutputDeviceClass::do_Panic (int mutUNUSED(type))
 
virtual bool mutabor::OutputDeviceClass::do_Open ()
 
virtual void mutabor::OutputDeviceClass::do_Close (bool sync=false)=0
 
 mutabor::InputDeviceClass::current_keys_type::entry::entry (int k, int u, int v, Route &R, InputDevice i, const ChannelData *c, void *d)
 
bool mutabor::InputDeviceClass::current_keys_type::entry::operator== (const entry &e) const
 
uint8_t mutabor::InputDeviceClass::current_keys_type::hash_type::operator() (const entry &val) const
 
void mutabor::InputDeviceClass::current_keys_type::add (int key, int velocity, int unique_id, Route &R, InputDevice i, const ChannelData &c, void *userdata)
 
void mutabor::InputDeviceClass::current_keys_type::add (entry e)
 
void mutabor::InputDeviceClass::current_keys_type::remove (int key, int velocity, int unique_id, Route &R)
 
void mutabor::InputDeviceClass::current_keys_type::remove (iterator i)
 
void mutabor::InputDeviceClass::current_keys_type::clear ()
 
void mutabor::InputDeviceClass::current_keys_type::rehash (size_t n)
 
iterator mutabor::InputDeviceClass::current_keys_type::begin ()
 
const_iterator mutabor::InputDeviceClass::current_keys_type::begin () const
 
iterator mutabor::InputDeviceClass::current_keys_type::end ()
 
const_iterator mutabor::InputDeviceClass::current_keys_type::end () const
 
virtual mutabor::InputDeviceClass::~InputDeviceClass ()
 
virtual void mutabor::InputDeviceClass::Close ()
 
virtual void mutabor::InputDeviceClass::Stop ()
 Stop playback or recording of the device. Mehr ...
 
virtual void mutabor::InputDeviceClass::Play ()
 Command the device to play music. Mehr ...
 
static bool mutabor::InputDeviceClass::BatchPlay ()
 Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex route environment. Mehr ...
 
static void mutabor::InputDeviceClass::RealtimePlay ()
 Play all input devices in realtime mode The the realtime mode allows interactive playing together with the integrated sequencer. Mehr ...
 
static void mutabor::InputDeviceClass::StopAll ()
 Stop all inupt devices. Mehr ...
 
static void mutabor::InputDeviceClass::PauseAll ()
 Pause all input devices. Mehr ...
 
static bool mutabor::InputDeviceClass::was_last_stop ()
 
virtual int mutabor::InputDeviceClass::WaitForDeviceFinish (bool blocking=true)
 Wait for the thread started with Play(). Mehr ...
 
virtual void mutabor::InputDeviceClass::Pause ()
 Pause playback or recording of the device. Mehr ...
 
virtual bool mutabor::InputDeviceClass::NeedsRealTime ()
 
virtual boost::chrono::microseconds mutabor::InputDeviceClass::PrepareNextEvent ()
 Go on to the next event. Mehr ...
 
virtual DevType mutabor::InputDeviceClass::GetType () const
 
virtual std::string mutabor::InputDeviceClass::GetTypeName () const
 
static boost::chrono::microseconds mutabor::InputDeviceClass::NO_DELTA ()
 
static bool mutabor::InputDeviceClass::IsDelta (boost::chrono::microseconds d)
 
virtual mutabor::InputDeviceClass::operator std::string () const
 
void mutabor::InputDeviceClass::NoteOn (Route &R, int key, int velocity, size_t make_unique, const ChannelData &input_channel_data, void *userdata)
 
void mutabor::InputDeviceClass::NoteOff (Route &R, int key, int velocity, size_t make_unique)
 
void mutabor::InputDeviceClass::DoNoteOff (Route &R, int key, int velocity, size_t make_unique)
 
void mutabor::InputDeviceClass::SilenceKeys (bool remove)
 
void mutabor::InputDeviceClass::DoSilenceKeys (bool remove)
 
void mutabor::InputDeviceClass::ResumeKeys ()
 
virtual void mutabor::InputDeviceClass::ResumeKeys (ScopedLock< thistype > &lock)
 
void mutabor::InputDeviceClass::Panic (int type)
 reset the device if requested Mehr ...
 
void mutabor::InputDeviceClass::Panic (int type, size_t unique_id)
 
virtual ChannelDatamutabor::InputDeviceClass::GetChannelData (const current_keys_type::entry &key) const =0
 
 mutabor::InputDeviceClass::InputDeviceClass (const std::string &name="", mutabor::MutaborModeType m=DeviceStop, int id=-1)
 
void mutabor::InputDeviceClass::outputs_handle_event (event e)
 
void mutabor::InputDeviceClass::DoResumeKeys ()
 
 mutabor::DeviceFactory::FactoryNotFound::FactoryNotFound (int i)
 
virtual mutabor::DeviceFactory::FactoryNotFound::~FactoryNotFound () throw ()
 
virtual const char * mutabor::DeviceFactory::FactoryNotFound::what (void) const throw ()
 Returns the thrown error message as a c-style string. Mehr ...
 
 mutabor::DeviceFactory::DeviceFactory (size_t id=0)
 
virtual mutabor::DeviceFactory::~DeviceFactory ()
 
static OutputDevice mutabor::DeviceFactory::CreateOutput (int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
 
static InputDevice mutabor::DeviceFactory::CreateInput (int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
 
template<class T >
static T mutabor::DeviceFactory::Create (int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
 
static void mutabor::DeviceFactory::Destroy ()
 
static void mutabor::DeviceFactory::LoadOutputDevices (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::DeviceFactory::SaveOutputDevices (tree_storage &config)
 write the routes to the configuration Mehr ...
 
static void mutabor::DeviceFactory::LoadInputDevices (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::DeviceFactory::SaveInputDevices (tree_storage &config)
 write the routes to the configuration Mehr ...
 
 mutabor::DeviceFactory::factorylist::factorylist ()
 
 mutabor::DeviceFactory::factorylist::~factorylist ()
 
virtual size_t mutabor::DeviceFactory::GetType () const =0
 
virtual OutputDeviceClassmutabor::DeviceFactory::DoCreateOutput (const std::string &name, int id=-1) const =0
 
virtual InputDeviceClassmutabor::DeviceFactory::DoCreateInput (const std::string &name, MutaborModeType mode, int id=-1) const =0
 
virtual void mutabor::DeviceFactory::DoLoadOutputDevices (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::DeviceFactory::DoSaveOutputDevices (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
virtual void mutabor::DeviceFactory::DoLoadInputDevices (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::DeviceFactory::DoSaveInputDevices (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
void mutabor::InitDeviceFactories ()
 
 mutabor::ScopedInputDevice::~ScopedInputDevice ()
 
ScopedInputDevicemutabor::ScopedInputDevice::operator= (InputDeviceClass *rhs)
 
ScopedInputDevicemutabor::ScopedInputDevice::operator= (const InputDevice &rhs)
 
 mutabor::ScopedOutputDevice::~ScopedOutputDevice ()
 
ScopedOutputDevicemutabor::ScopedOutputDevice::operator= (OutputDeviceClass *rhs)
 
ScopedOutputDevicemutabor::ScopedOutputDevice::operator= (const OutputDevice &rhs)
 
bool mutabor::OutOpen ()
 
void mutabor::OutClose ()
 
void mutabor::OutAddTime (frac time)
 
bool mutabor::InOpen ()
 
void mutabor::InClose ()
 
bool mutabor::NeedsRealTime ()
 
int Name2Key (const std::string name)
 
int Acc2Int (const std::string &acc)
 
void Clear (std::string *s)
 
int BuildTag ()
 
int StartSep ()
 
int BeginSegment ()
 
int EndSegment ()
 
int BeginSequenz ()
 
int EndSequenz ()
 
int BeginParameter ()
 
int EndParameter ()
 
int BeginRange ()
 
int EndRange ()
 
int NextSequenz ()
 
int Note (const std::string &name, const std::string &accedentials, int octave, const mutabor::frac &duration)
 
int Tag (const std::string &tagName)
 
int TagParaInt (long i)
 
int TagParaReal (double x)
 
int TagParaStr (const std::string &s)
 
int Comma ()
 
void UnRavel ()
 
GisType GetGisType (GisToken *token)
 
int GetTagId (const std::string &name, std::string &registered)
 
GisTokenCopyPara (GisToken *para)
 
GisTokenGisParse (const std::string FileName)
 
std::string GISPrettyPrint (std::string s)
 
double GetReal (GisToken *token)
 
char GetMidiInstrument (GisToken *token)
 
mutint64 GetTheSpeedFactor (GisToken *token)
 This function returns the speed factor that must be multiplied to the duration value in order to get a delta timestamp in μs. Mehr ...
 
frac GisReadHeadOn (GisReadHead **Head, frac dTime, GisReadProceed *proceed)
 
TagListCopy (TagList *list)
 
void Erase (TagList *list)
 
TagListRemoveTag (TagList **list)
 
TagListAddTag (TagList **list, GisTag *tag)
 
TagListEndTag (TagList **list, GisTagEnd *tagEnd)
 
void GisReadArtDummy (GisReadArtHead *, char)
 
frac GisReadArtHeadOn (GisReadArtHead **Head, frac dTime, GisReadArtProceed *proceed)
 
int StrCmp (const std::string &s1, const std::string &s2)
 
int CmpNote (GisToken *note1, GisToken *note2)
 
GisWriteHeadGetMatchingHeader (GisWriteHead **head, const std::string id)
 
int GisWriteHeadGis (GisWriteHead **head, std::string id, GisToken *token, char turn)
 
void CloseAllSubs (GisWriteHead *head)
 
size_t SepPos ()
 
void AddStr (std::string &Target, int Pos, const std::string &Source)
 
int CharIn (char c, const char *s)
 
int IsLetter (char c)
 
int DoError (int nr, int pos=-1)
 
int CheckError (int nr)
 
void SavePos ()
 
std::stringtakesep ()
 
int GetSep ()
 
long ReadLong (int SignAllowed)
 
int ReadParaNumber ()
 
int ReadParaStr ()
 
int ReadTag ()
 
int ReadNote ()
 
int DoParse ()
 
int GspParse (const std::string &FileName)
 
int OpenFile (const std::string &Name)
 
int CloseFile ()
 
int ReadNewLine ()
 
std::string StreamToHex (std::istream &buf)
 
 mutabor::TRouteClass< I, O, B >::NoOutputDevice::NoOutputDevice (const thistype *r)
 
virtual mutabor::TRouteClass< I, O, B >::NoOutputDevice::~NoOutputDevice () throw ()
 
 mutabor::TRouteClass< I, O, B >::NoInputDevice::NoInputDevice (const thistype *r)
 
virtual mutabor::TRouteClass< I, O, B >::~TRouteClass ()
 
virtual void mutabor::TRouteClass< I, O, B >::Save (tree_storage &config)
 Write the route settings into a tree based configuration. Mehr ...
 
virtual void mutabor::TRouteClass< I, O, B >::Load (tree_storage &config)
 Read the route into from a tree based configuration. Mehr ...
 
char mutabor::TRouteClass< I, O, B >::Check (int i)
 
const OutputDevicemutabor::TRouteClass< I, O, B >::GetOutputDevice () const
 
const InputDevicemutabor::TRouteClass< I, O, B >::GetInputDevice () const
 
void mutabor::TRouteClass< I, O, B >::NoteOn (int key, int velocity, size_t make_unique, const ChannelData &input_channel_data, void *userdata)
 
void mutabor::TRouteClass< I, O, B >::NoteOff (int key, int velocity, size_t make_unique)
 
void mutabor::TRouteClass< I, O, B >::MidiAnalysis (const std::vector< unsigned char > &midiCode)
 
void mutabor::TRouteClass< I, O, B >::MidiOut (midi_string &data)
 
void mutabor::TRouteClass< I, O, B >::UpdateTones ()
 
void mutabor::TRouteClass< I, O, B >::handle_event (event e)
 
int mutabor::TRouteClass< I, O, B >::GetChannel (int key, size_t channel, size_t id)
 
void mutabor::TRouteClass< I, O, B >::Panic (int type)
 
void mutabor::TRouteClass< I, O, B >::Panic (int type, size_t unique_id)
 
void mutabor::TRouteClass< I, O, B >::Controller (int controller, int value, size_t make_unique)
 
virtual void mutabor::TRouteClass< I, O, B >::Add (OutputDevice &out)
 add a new output device Mehr ...
 
virtual void mutabor::TRouteClass< I, O, B >::Add (InputDevice &in)
 add a new input device Mehr ...
 
virtual void mutabor::TRouteClass< I, O, B >::Add (Box &b)
 add a new box Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Replace (OutputDevice &olddev, OutputDevice &newdev)
 replace an existing output device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Replace (InputDevice &olddev, InputDevice &newdev)
 replace an existing input device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Replace (Box &oldbox, Box &newbox)
 replace an existing box Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Remove (OutputDevice &out)
 remove an existing output device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Remove (InputDevice &in)
 remove an existing input device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Remove (Box &b)
 remov an existing box Mehr ...
 
void mutabor::TRouteClass< I, O, B >::SetDeviceId (int Id, I)
 
void mutabor::TRouteClass< I, O, B >::SetDeviceId (int Id, O)
 
void mutabor::TRouteClass< I, O, B >::SetBoxId (int Id)
 
int mutabor::TRouteClass< I, O, B >::GetDeviceId (I)
 
int mutabor::TRouteClass< I, O, B >::GetDeviceId (O)
 
int mutabor::TRouteClass< I, O, B >::GetBoxId ()
 
bool mutabor::TRouteClass< I, O, B >::GetActive () const
 
void mutabor::TRouteClass< I, O, B >::SetActive (bool active)
 
Box mutabor::TRouteClass< I, O, B >::GetBox () const
 
virtual void mutabor::TRouteClass< I, O, B >::SetBox (Box b)
 
RouteType mutabor::TRouteClass< I, O, B >::GetType () const
 
void mutabor::TRouteClass< I, O, B >::SetType (RouteType type)
 
const std::stringmutabor::TRouteClass< I, O, B >::GetTypeName ()
 
int mutabor::TRouteClass< I, O, B >::GetInputFrom () const
 
void mutabor::TRouteClass< I, O, B >::SetInputFrom (int i)
 
int mutabor::TRouteClass< I, O, B >::GetOutputFrom () const
 
void mutabor::TRouteClass< I, O, B >::SetOutputFrom (int o)
 
int mutabor::TRouteClass< I, O, B >::GetInputTo () const
 
void mutabor::TRouteClass< I, O, B >::SetInputTo (int i)
 
int mutabor::TRouteClass< I, O, B >::GetOutputTo () const
 
void mutabor::TRouteClass< I, O, B >::SetOutputTo (int o)
 
bool mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel () const
 
void mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel (bool avoid)
 
int mutabor::TRouteClass< I, O, B >::get_routefile_id () const
 
size_t mutabor::TRouteClass< I, O, B >::get_session_id () const
 
static const routeListTypemutabor::TRouteClass< I, O, B >::GetRouteList ()
 
virtual void mutabor::TRouteClass< I, O, B >::Destroy ()
 Remove from Route list to be deleted, when it becomes free. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::InitializeIds ()
 Initialize the internal device identifiers. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::SaveRoutes (tree_storage &config)
 Save the current routes in a tree storage. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::LoadRoutes (tree_storage &config)
 Load the current routes from a tree storage. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::ClearRouteList ()
 
virtual mutabor::TRouteClass< I, O, B >::operator std::string () const
 
 mutabor::TRouteClass< I, O, B >::WATCHEDPTR (void, routing, TRouteClass) userdata
 
 mutabor::TRouteClass< I, O, B >::TRouteClass ()
 
 mutabor::TRouteClass< I, O, B >::TRouteClass (InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box &box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
 
void mutabor::TRouteClass< I, O, B >::Create (InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
 
virtual void mutabor::TRouteClass< I, O, B >::setUserData (void *data)
 
virtual void * mutabor::TRouteClass< I, O, B >::getUserData () const
 
static void mutabor::TRouteClass< I, O, B >::AppendToRouteList (Route route)
 
static void mutabor::TRouteClass< I, O, B >::RemoveFromRouteList (Route route)
 
Route mutabor::FindRoute (size_t id)
 
 mutabor::RouteFactory::FactoryAlreadySet::FactoryAlreadySet (RouteFactory *o, RouteFactory *n)
 
 mutabor::RouteFactory::RouteFactoryNotSet::RouteFactoryNotSet ()
 
 mutabor::RouteFactory::RouteFactory ()
 Creates a route Factory. Mehr ...
 
static Route mutabor::RouteFactory::Create ()
 Creates a generic route. Mehr ...
 
static Route mutabor::RouteFactory::Create (InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
 Creates a preconfigured route according to the given type. Mehr ...
 
static void mutabor::RouteFactory::Destroy ()
 Destroy the route factory. Mehr ...
 
static void mutabor::RouteFactory::LoadRoutes (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::RouteFactory::SaveRoutes (tree_storage &config)
 write the routes to the configuration Mehr ...
 
virtual mutabor::RouteFactory::~RouteFactory ()
 Destructor. Mehr ...
 
virtual RouteClassmutabor::RouteFactory::DoCreate () const __attribute__((malloc))
 Creates a generic route. Mehr ...
 
virtual RouteClassmutabor::RouteFactory::DoCreate (InputDevice &in, OutputDevice &out, RouteType type, int iFrom, int iTo, Box box, bool active, int oFrom, int oTo, bool oNoDrum) const __attribute__((malloc))
 Creates a preconfigured route. Mehr ...
 
virtual void mutabor::RouteFactory::DoLoadRoutes (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::RouteFactory::DoSaveRoutes (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
 mutabor::ScopedRoute::~ScopedRoute ()
 
ScopedRoutemutabor::ScopedRoute::operator= (element_type *rhs)
 
ScopedRoutemutabor::ScopedRoute::operator= (const Route &rhs)
 
 compat30::RouteIOError::RouteIOError (const std::string &what_arg)
 
void compat30::LoadRoutes (const std::string &)
 load the routes from a text string Mehr ...
 
void compat30::SaveRoutes (std::string &)
 write the routes to the given string Mehr ...
 
template<>
InputDevice mutabor::DeviceFactory::Create (int type, const std::string &name, MutaborModeType mode, int id)
 
GisType GisTag::GetParaType (int nr)
 
GisTokenGisTag::GetPara (int nr)
 
 GisNote::GisNote (int key, int octave, int acc, const std::string &sep="", GisToken *next=0)
 
int GisNote::GetKey ()
 
GisReadHeadGisReadHead::InsertInfrontOf (GisReadHead *position)
 
GisReadHeadGisReadHead::CutOut ()
 
void GisReadHead::CreateSegmentSubs ()
 
void GisReadHead::CreateSequenzSubs ()
 
void GisReadHead::Read ()
 
virtual std::string GisReadHead::ToString ()
 
void GisReadArtHead::Read ()
 
virtual std::string GisReadArtHead::ToString ()
 
 ChordNote::ChordNote (ChordNote *first)
 
void ChordNote::CountOnTime (mutabor::frac dTime)
 
void ChordNote::SetNoteOn (GisToken *note)
 
int ChordNote::SetNoteOff (GisToken *note)
 
void ChordNote::AddGis (GisToken *token)
 
void ChordNote::CheckCloseAlter ()
 
void ChordNote::CheckCloseTie ()
 
int ChordNote::MutNoteOn (int key, double pitch, int instrId, int taste, std::string sep)
 
int ChordNote::MutNoteOff ()
 
GisWriteHeadGisWriteHead::InsertAfter (GisWriteHead *position)
 
GisWriteHeadGisWriteHead::CutOut ()
 
ChordNoteGisWriteHead::GetFreeNote ()
 
ChordNoteGisWriteHead::GetNote (int instrId, int taste)
 
int GisWriteHead::ReadyForBoss ()
 
void GisWriteHead::RemoveComma ()
 
int GisWriteHead::CloseSubs (GisToken **cont=0)
 
int GisWriteHead::CloseCurrentToken (char insertRest=1)
 
int GisWriteHead::ProceedGis (GisToken *token, char turn=0)
 
void GisWriteHead::WriteChord ()
 
void GisWriteHead::AddTime (mutabor::frac dTime)
 
void InputMidiFileTest::testBatchPlay1 ()
 
void InputMidiFileTest::testBug019010_2 ()
 
void InputMidiFileTest::testBug019010 ()
 
void InputMidiFileTest::testBankSelect ()
 
void InputMidiFileTest::testAllControllerOff ()
 
void InputMidiFileTest::testRpnNrpn ()
 
void InputMidiFileTest::testControllerPlay ()
 
bool OutputMidiFileTest::CheckOut (std::string s, int line, const char *file)
 
void OutputMidiFileTest::setUp ()
 
void OutputMidiFileTest::tearDown ()
 
void OutputMidiFileTest::testNoteOnOff ()
 
void OutputMidiFileTest::testBatchPlay1 ()
 
void InputMidiFileTest::testBoxMidiIn ()
 
void InputMidiFileTest::testAfterTouch ()
 
void InputMidiFileTest::testSysEx ()
 
bool midicmnOutputDevice::unsortedCheck (const std::string &s, int line=-1, const std::string &filename=(__FILE__))
 
void CommonMidiOutputTest::setUp ()
 
void CommonMidiOutputTest::tearDown ()
 
void CommonMidiOutputTest::testNoteOnOff ()
 
void CommonMidiOutputTest::testMoreNotesThanChannels ()
 
void CommonMidiInputTest::setUp ()
 
void CommonMidiInputTest::tearDown ()
 
void CommonMidiInputTest::testPanic ()
 
void CommonMidiInputTest::testGlobalPanic ()
 
void Mutex< M >::debug_print_thread_mutex (const char *s) const
 

Variablen

Box mutabor::BoxClass::ChangedCallback::box
 
enum mutabor::BoxClass::logic_entry:: { ... }  mutabor::BoxClass::logic_entry::flags
 
bool mutabor::BoxClass::logic_entry::active
 
std::string mutabor::BoxClass::logic_entry::name
 
std::string mutabor::BoxClass::logic_entry::startTuning
 
int mutabor::BoxClass::logic_entry::key
 
struct any_trigger mutabor::BoxClass::logic_entry::trigger
 
int mutabor::BoxClass::current_tone_entry::index
 
size_t mutabor::BoxClass::current_tone_entry::id
 
int mutabor::BoxClass::current_tone_entry::channel
 
Box mutabor::BoxClass::BoxLock::box
 
static listtype mutabor::BoxClass::boxList
 
static int mutabor::BoxClass::nextboxid = Box0
 
mutabor_box_typemutabor::BoxClass::box
 
idtype< BoxClassmutabor::BoxClass::session_id
 
int mutabor::BoxClass::routefile_id
 
routeListType mutabor::BoxClass::routes
 
bool mutabor::BoxClass::open
 
std::string mutabor::BoxClass::current_logic
 
std::string mutabor::BoxClass::current_tonesystem
 
int mutabor::BoxClass::current_key_tonesystem
 
int mutabor::BoxClass::current_key_logic
 
unsigned int mutabor::BoxClass::updateflags
 
std::list< ChangedCallback * > mutabor::BoxClass::callbacks
 
BoxClassmutabor::BoxClass::set_callback::box
 
CompileCallbackmutabor::BoxClass::current_compile_callback
 
static mutabor::hidden::mutabor_callback_type mutabor::BoxClass::backend_callbacks
 
Mutex mutabor::BoxClass::mutex
 
int mutabor::BoxClass::logic_timing
 
Mutex mutabor::BoxClass::logic_timing_mutex
 
mutint64 mutabor::BoxClass::loop_timeout
 
watchdog< Box > * mutabor::BoxClass::loopguard
 
 mutabor::BoxClass::REFPTR_INTERFACE
 
int mutabor::BoxFactory::FactoryNotFound::id
 
std::string mutabor::BoxFactory::FactoryNotFound::message_
 
static factorylist mutabor::BoxFactory::factories
 
double mutabor::box_support::tone_entry::pitch
 
enum mutabor::box_support::tone_entry:: { ... }  mutabor::box_support::tone_entry::flag
 
int mutabor::box_support::tone_system::anchor
 
double mutabor::box_support::tone_system::period
 
tone_list mutabor::box_support::tone_system::tones
 
char mutabor::InDevChanged
 
static const size_t mutabor::ChannelData::IGNORE_UNIQUE_ID = ULONG_MAX
 
controller_vector mutabor::ChannelData::controller
 
controller_vector mutabor::ChannelData::controller_changed
 
size_t mutabor::ChannelData::first_unchanged
 
bool mutabor::ChannelData::looped
 
bool mutabor::ChannelData::data_is_rpn
 
int mutabor::ChannelData::Sound
 
uint8_t mutabor::ChannelData::bank_coarse
 
uint8_t mutabor::ChannelData::bank_fine
 
int mutabor::ChannelData::bend
 
idtype< Devicemutabor::Device::session_id
 Id used during runtime;. Mehr ...
 
int mutabor::Device::routefile_id
 
std::string mutabor::Device::Name
 
bool mutabor::Device::dirty:1
 
bool mutabor::Device::isOpen:1
 
enum MutaborModeType mutabor::Device::Mode
 
routeListType mutabor::Device::routes
 
void * mutabor::Device::userdata
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::REFPTR_INTERFACE
 
static listtype mutabor::CommonTypedDeviceAPI< T, P, L >::deviceList
 
int mutabor::InputDeviceClass::current_keys_type::entry::key
 
size_t mutabor::InputDeviceClass::current_keys_type::entry::unique_id
 
int mutabor::InputDeviceClass::current_keys_type::entry::velocity
 
Route mutabor::InputDeviceClass::current_keys_type::entry::route
 
InputDevice mutabor::InputDeviceClass::current_keys_type::entry::device
 
const ChannelDatamutabor::InputDeviceClass::current_keys_type::entry::settings
 
void * mutabor::InputDeviceClass::current_keys_type::entry::userdata
 
map_type mutabor::InputDeviceClass::current_keys_type::map
 
current_keys_type mutabor::InputDeviceClass::current_keys
 
static bool mutabor::InputDeviceClass::last_was_stop = true
 
int mutabor::DeviceFactory::FactoryNotFound::id
 
std::string mutabor::DeviceFactory::FactoryNotFound::message_
 
static factorylist mutabor::DeviceFactory::factories
 
const char * Tags [NTAGS]
 
const char * TagShorts [NTAGSHORTS]
 
GisTokenRoot
 
GisToken ** Current
 
GisTokenLastOpenBracket
 
GisTagBeginLastOpenRange
 
char TagMode
 
std::string TagName
 
std::string TagSep
 
GisTokenPara
 
GisTokenLastPara
 
int LastOctave
 
mutabor::frac LastDuration
 
int debugcount = 0
 
const char * Tags [NTAGS]
 
const char * TagShorts [NTAGSHORTS]
 
char ArticulationHold [5] = { 80, 100, 90, 90, 60 }
 
char ArticulationOff [5] = { 80, 80, 60, 127, 127 }
 
GisReadProceed GisReadDummy
 
GisReadArtProceed GisReadArtDummy
 
int GspCurrentLineNr
 
int GspErrorLineNr
 
int GspErrorPos
 
std::string GspErrorLine
 
int GspError
 
int PossibleErrorLineNr
 
int PossibleErrorPos
 
std::string PossibleErrorLine
 
std::string Sep = ""
 
char ParaMode
 
char Komma
 
int NumberLength
 
std::string Brackets = ""
 
char LastTag
 
static int octave
 
static std::string accedentials
 
static frac duration
 
char SepChars [] = " \t\r\n"
 
char DelimitChars [] = "{}[]()"
 
bool minus
 
int GspCurrentLineNr
 
int GspErrorLineNr
 
int GspErrorPos
 
std::string GspErrorLine
 
int GspError
 
std::string Sep
 
const char * GspErrorText []
 
const char * GspErrorText []
 
std::string CurrentLine
 
size_t CurrentPos
 
int Eof
 
boost::filesystem::ifstream * File
 
static int bad = 0
 
std::string CurrentLine
 
size_t CurrentPos
 
int Eof
 
const std::string mutabor::RTName []
 
const std::string mutabor::DevTypeName []
 
Route mutabor::TRouteClass< I, O, B >::NoOutputDevice::route
 
Route mutabor::TRouteClass< I, O, B >::NoInputDevice::route
 
OutputDevice mutabor::TRouteClass< I, O, B >::Out
 
InputDevice mutabor::TRouteClass< I, O, B >::In
 
Box mutabor::TRouteClass< I, O, B >::box
 
static routeListType mutabor::TRouteClass< I, O, B >::routeList
 
idtype< TRouteClass< I, O > > mutabor::TRouteClass< I, O, B >::session_id
 
int mutabor::TRouteClass< I, O, B >::routefile_id
 
int mutabor::TRouteClass< I, O, B >::inputid
 
int mutabor::TRouteClass< I, O, B >::outputid
 
int mutabor::TRouteClass< I, O, B >::boxid
 
RouteType mutabor::TRouteClass< I, O, B >::Type
 
int mutabor::TRouteClass< I, O, B >::IFrom
 
int mutabor::TRouteClass< I, O, B >::ITo
 
bool mutabor::TRouteClass< I, O, B >::Active
 
int mutabor::TRouteClass< I, O, B >::OFrom
 
int mutabor::TRouteClass< I, O, B >::OTo
 
bool mutabor::TRouteClass< I, O, B >::ONoDrum
 
 mutabor::TRouteClass< I, O, B >::REFPTR_INTERFACE
 
RouteFactorymutabor::RouteFactory::FactoryAlreadySet::old
 
RouteFactorymutabor::RouteFactory::FactoryAlreadySet::created
 
static RouteFactorymutabor::RouteFactory::factory
 Pointer to the current factory. Mehr ...
 
const char * t
 
const char const char * u
 
Mutex debugmutex
 

Freundbeziehungen

class mutabor::BoxClass::::mutaborGUI::BoxData
 
class mutabor::BoxClass::BoxFactory
 
class mutabor::Device::::mutaborGUI::GUIOutputDeviceBase
 
class mutabor::Device::::mutaborGUI::GUIInputDeviceBase
 
class mutabor::OutputDeviceClass::DeviceFactory
 
class mutabor::InputDeviceClass::DeviceFactory
 
class mutabor::TRouteClass< I, O, B >::RouteFactory
 
class mutabor::TRouteClass< I, O, B >::mutaborGUI::GUIRouteBase
 
void mutabor::BoxClass::initialize_box_data ()
 

Ausführliche Beschreibung

This group contains functions and classes that can be used to set up a generic event routing.

It uses the RtMidi library for MIDI access, but is kept independent from any GUI library.

Makro-Dokumentation

◆ _GNU_SOURCE

#define _GNU_SOURCE   1

Definiert in Zeile 62 der Datei Box.h.

◆ AddStr

#define AddStr (   s1,
  s2,
  s3 
)    (s1 += s2 + s3)

Definiert in Zeile 492 der Datei GIS.cpp.

Wird benutzt von BeginParameter(), BeginRange(), Clear() und EndParameter().

◆ BracketDeep

#define BracketDeep   (Brackets.length())

Definiert in Zeile 57 der Datei GSP.cpp.

Wird benutzt von DoParse() und GspParse().

◆ CHAR0

#define CHAR0   CurrentLine[CurrentPos]

Definiert in Zeile 179 der Datei GSP.cpp.

Wird benutzt von DoParse(), GetSep(), GspParse(), ReadLong(), ReadNote(), ReadParaNumber(), ReadParaStr() und ReadTag().

◆ CHAR1

#define CHAR1   CurrentLine[CurrentPos+1]

Definiert in Zeile 180 der Datei GSP.cpp.

Wird benutzt von GetSep() und ReadParaStr().

◆ CHECKDUP

#define CHECKDUP (   target,
  source 
)    target = source;

◆ CNAlter

#define CNAlter   1

Definiert in Zeile 424 der Datei GIS_Head.h.

Wird benutzt von ChordNote::CheckCloseAlter(), ChordNote::MutNoteOff() und ChordNote::MutNoteOn().

◆ CNNoteOn

#define CNNoteOn   2

◆ DEFAULT_BENDING_RANGE

#define DEFAULT_BENDING_RANGE   2l

Definiert in Zeile 55 der Datei midicmn.h.

Wird benutzt von mutabor::OutputMidiPort::Load().

◆ DEVFMIDFTEST_H

#define DEVFMIDFTEST_H

Definiert in Zeile 38 der Datei DevMidFTest.h.

◆ DEVFMIDFTEST_H_PRECOMPILED

#define DEVFMIDFTEST_H_PRECOMPILED

Definiert in Zeile 45 der Datei DevMidFTest.h.

◆ DeviceMaxType

#define DeviceMaxType   DTGis+1

Definiert in Zeile 98 der Datei Device.h.

◆ DRUMCHANNEL

#define DRUMCHANNEL   9

Definiert in Zeile 69 der Datei Device.h.

◆ FOR_MUTWIN

#define FOR_MUTWIN

Definiert in Zeile 53 der Datei GIS.h.

◆ GMN_NO_KEY

#define GMN_NO_KEY   -32000

Definiert in Zeile 89 der Datei GIS.h.

Wird benutzt von ChordNote::ChordNote(), ChordNote::Cmp(), GisNote::GisNote() und ChordNote::MutNoteOn().

◆ HIDE_MUTABOR_C_API [1/2]

#define HIDE_MUTABOR_C_API

Definiert in Zeile 43 der Datei box_support.h.

◆ HIDE_MUTABOR_C_API [2/2]

#define HIDE_MUTABOR_C_API

Definiert in Zeile 43 der Datei Box.h.

◆ MIDICMNTEST_H

#define MIDICMNTEST_H

Definiert in Zeile 38 der Datei midicmnTest.h.

◆ MIDICMNTEST_H_PRECOMPILED

#define MIDICMNTEST_H_PRECOMPILED

Definiert in Zeile 48 der Datei midicmnTest.h.

◆ MMSYSTEM_H

#define MMSYSTEM_H

Definiert in Zeile 41 der Datei DevGIS.cpp.

◆ MU32_ROUTING_DEVICE_H

#define MU32_ROUTING_DEVICE_H

Definiert in Zeile 37 der Datei Device.h.

◆ MU32_ROUTING_DEVICE_H_PRECOMPILED

#define MU32_ROUTING_DEVICE_H_PRECOMPILED

Definiert in Zeile 55 der Datei Device.h.

◆ MU32_ROUTING_GMN_DEVGIS_H

#define MU32_ROUTING_GMN_DEVGIS_H

Definiert in Zeile 36 der Datei DevGIS.h.

◆ MU32_ROUTING_GMN_DEVGIS_H_PRECOMPILED

#define MU32_ROUTING_GMN_DEVGIS_H_PRECOMPILED

Definiert in Zeile 51 der Datei DevGIS.h.

◆ MU32_ROUTING_GMN_GIS_H

#define MU32_ROUTING_GMN_GIS_H

Definiert in Zeile 36 der Datei GIS.h.

◆ MU32_ROUTING_GMN_GIS_H_PRECOMPILED

#define MU32_ROUTING_GMN_GIS_H_PRECOMPILED

Definiert in Zeile 47 der Datei GIS.h.

◆ MU32_ROUTING_GMN_GIS_HEAD_H

#define MU32_ROUTING_GMN_GIS_HEAD_H

Definiert in Zeile 40 der Datei GIS_Head.h.

◆ MU32_ROUTING_GMN_GIS_HEAD_H_PRECOMPILED

#define MU32_ROUTING_GMN_GIS_HEAD_H_PRECOMPILED

Definiert in Zeile 53 der Datei GIS_Head.h.

◆ MU32_ROUTING_GMN_GSP_FILE_H

#define MU32_ROUTING_GMN_GSP_FILE_H

Definiert in Zeile 39 der Datei GSP_File.h.

◆ MU32_ROUTING_GMN_GSP_FILE_H_PRECOMPILED

#define MU32_ROUTING_GMN_GSP_FILE_H_PRECOMPILED

Definiert in Zeile 50 der Datei GSP_File.h.

◆ MU32_ROUTING_GMN_GSP_H

#define MU32_ROUTING_GMN_GSP_H

Definiert in Zeile 44 der Datei GSP.h.

◆ MU32_ROUTING_GMN_GSP_H_PRECOMPILED

#define MU32_ROUTING_GMN_GSP_H_PRECOMPILED

Definiert in Zeile 55 der Datei GSP.h.

◆ MU32_ROUTING_MIDI_COMMONFILEDEVICE_H

#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H

Definiert in Zeile 36 der Datei CommonFileDevice.h.

◆ MU32_ROUTING_MIDI_COMMONFILEDEVICE_H_PRECOMPILED

#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H_PRECOMPILED

Definiert in Zeile 50 der Datei CommonFileDevice.h.

◆ MU32_ROUTING_MIDI_DEVMIDF_H

#define MU32_ROUTING_MIDI_DEVMIDF_H

Definiert in Zeile 42 der Datei DevMidF.h.

◆ MU32_ROUTING_MIDI_DEVMIDF_H_PRECOMPILED

#define MU32_ROUTING_MIDI_DEVMIDF_H_PRECOMPILED

Definiert in Zeile 56 der Datei DevMidF.h.

◆ MU32_ROUTING_MIDI_DEVMIDI_H

#define MU32_ROUTING_MIDI_DEVMIDI_H

Definiert in Zeile 37 der Datei DevMidi.h.

◆ MU32_ROUTING_MIDI_DEVMIDI_H_PRECOMPILED

#define MU32_ROUTING_MIDI_DEVMIDI_H_PRECOMPILED

Definiert in Zeile 51 der Datei DevMidi.h.

◆ MU32_ROUTING_ROUTE_H

#define MU32_ROUTING_ROUTE_H

Definiert in Zeile 42 der Datei Route.h.

◆ MU32_ROUTING_ROUTE_H_PRECOMPILED

#define MU32_ROUTING_ROUTE_H_PRECOMPILED

Definiert in Zeile 57 der Datei Route.h.

◆ MU32_ROUTING_ROUTE_INLINES_H

#define MU32_ROUTING_ROUTE_INLINES_H

Definiert in Zeile 36 der Datei Route-inlines.h.

◆ MU32_ROUTING_ROUTE_INLINES_H_PRECOMPILED

#define MU32_ROUTING_ROUTE_INLINES_H_PRECOMPILED

Definiert in Zeile 50 der Datei Route-inlines.h.

◆ MU32_ROUTING_ROUTECOMPAT_H

#define MU32_ROUTING_ROUTECOMPAT_H

Definiert in Zeile 42 der Datei RouteCompat.h.

◆ MU32_ROUTING_ROUTECOMPAT_H_PRECOMPILED

#define MU32_ROUTING_ROUTECOMPAT_H_PRECOMPILED

Definiert in Zeile 52 der Datei RouteCompat.h.

◆ NEW_LINE

#define NEW_LINE   "\n"

Definiert in Zeile 72 der Datei GSP.cpp.

Wird benutzt von GetSep() und ReadParaStr().

◆ NOTE

#define NOTE   ((GisNote*)note)

Definiert in Zeile 828 der Datei GIS_Head.cpp.

Wird benutzt von ChordNote::SetNoteOn().

◆ NOTE1

#define NOTE1   ((GisNote*)note1)

Definiert in Zeile 744 der Datei GIS_Head.cpp.

Wird benutzt von CmpNote().

◆ NOTE2

#define NOTE2   ((GisNote*)note2)

Definiert in Zeile 745 der Datei GIS_Head.cpp.

Wird benutzt von CmpNote().

◆ NTAGS

#define NTAGS   52

Definiert in Zeile 67 der Datei GIS.h.

Wird benutzt von GetTagId().

◆ NTAGSHORTS

#define NTAGSHORTS   6

Definiert in Zeile 68 der Datei GIS.h.

Wird benutzt von GetTagId().

◆ READCONFIGINT

#define READCONFIGINT (   config,
  name,
  variable,
  defval 
)
Wert:
variable = config.Read((name),defval); \
DEBUGLOG2(config,("Read " name " = %d"),variable);
const char * name
Definition: TabGen.cpp:59

Definiert in Zeile 359 der Datei Route.cpp.

◆ READCONFIGSTR

#define READCONFIGSTR (   config,
  name,
  variable,
  defval 
)
Wert:
variable = config.Read((name),defval); \
DEBUGLOG2(config,("Read " name " = %s"),variable.c_str());
const char * name
Definition: TabGen.cpp:59

Definiert in Zeile 355 der Datei Route.cpp.

◆ ROUTING_BOX_H

#define ROUTING_BOX_H

Definiert in Zeile 36 der Datei Box.h.

◆ ROUTING_BOX_H_PRECOMPILED

#define ROUTING_BOX_H_PRECOMPILED

Definiert in Zeile 56 der Datei Box.h.

◆ ROUTING_BOX_INLINES

#define ROUTING_BOX_INLINES

Definiert in Zeile 35 der Datei Box-inlines.h.

◆ ROUTING_BOX_INLINES_PRECOMPILED

#define ROUTING_BOX_INLINES_PRECOMPILED

Definiert in Zeile 48 der Datei Box-inlines.h.

◆ ROUTING_BOX_SUPPORT_H

#define ROUTING_BOX_SUPPORT_H

Definiert in Zeile 36 der Datei box_support.h.

◆ ROUTING_BOX_SUPPORT_H_PRECOMPILED

#define ROUTING_BOX_SUPPORT_H_PRECOMPILED

Definiert in Zeile 48 der Datei box_support.h.

◆ ROUTING_DEVICE_INLINES

#define ROUTING_DEVICE_INLINES

Definiert in Zeile 35 der Datei Device-inlines.h.

◆ ROUTING_DEVICE_INLINES_PRECOMPILED

#define ROUTING_DEVICE_INLINES_PRECOMPILED

Definiert in Zeile 46 der Datei Device-inlines.h.

◆ ROUTING_MIDICMN_H

#define ROUTING_MIDICMN_H

Definiert in Zeile 36 der Datei midicmn.h.

◆ ROUTING_MIDICMN_H_PRECOMPILED

#define ROUTING_MIDICMN_H_PRECOMPILED

Definiert in Zeile 49 der Datei midicmn.h.

◆ ROUTING_TIMINGPARAMS

#define ROUTING_TIMINGPARAMS

Definiert in Zeile 35 der Datei timing.h.

◆ ROUTING_TIMINGPARAMS_PRECOMPILED

#define ROUTING_TIMINGPARAMS_PRECOMPILED

Definiert in Zeile 46 der Datei timing.h.

◆ SepPos

#define SepPos   SepPos()

Definiert in Zeile 46 der Datei GSP.cpp.

Wird benutzt von GetSep(), ReadNote() und ReadTag().

◆ SRC_KERNEL_ROUTING_EVENT_H

#define SRC_KERNEL_ROUTING_EVENT_H

Definiert in Zeile 35 der Datei event.h.

◆ SRC_KERNEL_ROUTING_EVENT_H_PRECOMPILED

#define SRC_KERNEL_ROUTING_EVENT_H_PRECOMPILED

Definiert in Zeile 47 der Datei event.h.

◆ SRC_KERNEL_ROUTING_THREAD_H

#define SRC_KERNEL_ROUTING_THREAD_H

Definiert in Zeile 44 der Datei thread.h.

◆ SRC_KERNEL_ROUTING_THREAD_H_PRECOMPILED

#define SRC_KERNEL_ROUTING_THREAD_H_PRECOMPILED

Definiert in Zeile 57 der Datei thread.h.

◆ SRC_KERNEL_ROUTING_WATCHDOG_H

#define SRC_KERNEL_ROUTING_WATCHDOG_H

Definiert in Zeile 34 der Datei watchdog.h.

◆ SRC_KERNEL_ROUTING_WATCHDOG_H_PRECOMPILED

#define SRC_KERNEL_ROUTING_WATCHDOG_H_PRECOMPILED

Definiert in Zeile 46 der Datei watchdog.h.

◆ strdupchr

#define strdupchr (   a)    (a)

Definiert in Zeile 331 der Datei GIS.cpp.

Wird benutzt von GisNote::GisNote().

◆ TAG

#define TAG   ((GisTag*)Cursor)

Definiert in Zeile 507 der Datei GIS_Head.cpp.

Wird benutzt von GisReadArtHead::Read().

◆ TAGEND

#define TAGEND   ((GisTagEnd*)Cursor)

Definiert in Zeile 508 der Datei GIS_Head.cpp.

Wird benutzt von GisReadArtHead::Read().

◆ TAKESEP

#define TAKESEP   takesep()

Definiert in Zeile 188 der Datei GSP.cpp.

Wird benutzt von GetSep().

◆ TTaccent

#define TTaccent   22

Definiert in Zeile 80 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

◆ TTalter

#define TTalter   50

Definiert in Zeile 84 der Datei GIS.h.

Wird benutzt von ChordNote::MutNoteOn(), mutabor::InputGis::Proceed() und GisReadArtHead::Read().

◆ TTinstr

#define TTinstr   19

Definiert in Zeile 77 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

◆ TTintens

#define TTintens   1

Definiert in Zeile 74 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

◆ TTkey

#define TTkey   36

Definiert in Zeile 82 der Datei GIS.h.

Wird benutzt von GisWriteHead::ProceedGis().

◆ TTmutabor

#define TTmutabor   51

Definiert in Zeile 85 der Datei GIS.h.

Wird benutzt von mutabor::InputGis::Proceed().

◆ TToct

#define TToct   37

Definiert in Zeile 83 der Datei GIS.h.

Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().

◆ TTslur

#define TTslur   2

Definiert in Zeile 75 der Datei GIS.h.

◆ TTstacc

#define TTstacc   21

Definiert in Zeile 79 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

◆ TTtempo

#define TTtempo   12

Definiert in Zeile 76 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

◆ TTten

#define TTten   23

Definiert in Zeile 81 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

◆ TTtie

#define TTtie   20

Definiert in Zeile 78 der Datei GIS.h.

Wird benutzt von ChordNote::CheckCloseTie().

◆ uchar

#define uchar   unsigned char

Definiert in Zeile 76 der Datei GSP.cpp.

◆ WTAG

#define WTAG   ((GisTag*)(*Cursor))

Definiert in Zeile 1245 der Datei GIS_Head.cpp.

Wird benutzt von GisWriteHead::ProceedGis().

◆ WTAGEND

#define WTAGEND   ((GisTagEnd*)token)

Definiert in Zeile 1246 der Datei GIS_Head.cpp.

Wird benutzt von GisWriteHead::ProceedGis().

◆ ZIFFER

#define ZIFFER   (('0') <= t[i] && t[i] <= ('9'))

Definiert in Zeile 87 der Datei GIS_Head.cpp.

Wird benutzt von GetTheSpeedFactor().

Dokumentation der benutzerdefinierten Typen

◆ action

typedef mutabor::hidden::do_aktion mutabor::BoxClass::ChangedCallback::action

Definiert in Zeile 225 der Datei Box.h.

◆ base [1/3]

Definiert in Zeile 148 der Datei Box.h.

◆ base [2/3]

Definiert in Zeile 949 der Datei Box.h.

◆ base [3/3]

Definiert in Zeile 1463 der Datei Device.h.

◆ Box [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef B mutabor::TRouteClass< I, O, B >::Box

Definiert in Zeile 117 der Datei Route.h.

◆ Box [2/2]

Definiert in Zeile 129 der Datei Box.h.

◆ BoxListType

typedef std::vector<Box> mutabor::BoxListType

Definiert in Zeile 131 der Datei Box.h.

◆ const_iterator

Definiert in Zeile 1067 der Datei Device.h.

◆ controller_vector

typedef std::vector<int> mutabor::ChannelData::controller_vector

Definiert in Zeile 105 der Datei Device.h.

◆ current_tone_list

Definiert in Zeile 513 der Datei Box.h.

◆ DevicePtr

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
typedef P mutabor::CommonTypedDeviceAPI< T, P, L >::DevicePtr

Definiert in Zeile 694 der Datei Device.h.

◆ error_type

Definiert in Zeile 113 der Datei Box.h.

◆ event

Definiert in Zeile 667 der Datei event.h.

◆ GisReadArtProceed

typedef void GisReadArtProceed(GisReadArtHead *token, char turn)

Definiert in Zeile 301 der Datei GIS_Head.h.

◆ GisReadProceed

typedef void GisReadProceed(GisReadHead *, char)

Definiert in Zeile 135 der Datei GIS_Head.h.

◆ harmony_action

Definiert in Zeile 88 der Datei Box.h.

◆ InputDevice [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef I mutabor::TRouteClass< I, O, B >::InputDevice

Definiert in Zeile 115 der Datei Route.h.

◆ InputDevice [2/2]

Definiert in Zeile 1018 der Datei Device.h.

◆ InputDeviceList

Definiert in Zeile 1020 der Datei Device.h.

◆ interval

Definiert in Zeile 217 der Datei Box.h.

◆ iterator

Definiert in Zeile 1066 der Datei Device.h.

◆ keyboard_action

Definiert in Zeile 86 der Datei Box.h.

◆ listtype [1/2]

Definiert in Zeile 252 der Datei Box.h.

◆ listtype [2/2]

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
typedef L mutabor::CommonTypedDeviceAPI< T, P, L >::listtype

Definiert in Zeile 695 der Datei Device.h.

◆ logic_list

Definiert in Zeile 483 der Datei Box.h.

◆ map_type

Definiert in Zeile 1065 der Datei Device.h.

◆ midi_action

Definiert in Zeile 87 der Datei Box.h.

◆ midi_string

typedef std::vector< uint8_t > mutabor::midi_string

Definiert in Zeile 77 der Datei Device.h.

◆ OutputDevice [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef O mutabor::TRouteClass< I, O, B >::OutputDevice

Definiert in Zeile 116 der Datei Route.h.

◆ OutputDevice [2/2]

Definiert in Zeile 839 der Datei Device.h.

◆ OutputDeviceList

Definiert in Zeile 841 der Datei Device.h.

◆ OutputDeviceSet

Definiert in Zeile 842 der Datei Device.h.

◆ Route [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef boost::intrusive_ptr<TRouteClass> mutabor::TRouteClass< I, O, B >::Route

Definiert in Zeile 120 der Datei Route.h.

◆ Route [2/2]

Definiert in Zeile 548 der Datei Route.h.

◆ RouteClass

Definiert in Zeile 549 der Datei Route.h.

◆ routeListType [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef cow_container<std::vector<Route> > mutabor::TRouteClass< I, O, B >::routeListType

Definiert in Zeile 121 der Datei Route.h.

◆ routeListType [2/2]

Definiert in Zeile 550 der Datei Route.h.

◆ TagList

typedef struct TagListData TagList

◆ thistype [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef TRouteClass mutabor::TRouteClass< I, O, B >::thistype

Definiert in Zeile 114 der Datei Route.h.

◆ thistype [2/2]

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
typedef T mutabor::CommonTypedDeviceAPI< T, P, L >::thistype

Definiert in Zeile 693 der Datei Device.h.

◆ ThreadResult

typedef int ThreadResult

Definiert in Zeile 265 der Datei thread.h.

◆ tone_list

Definiert in Zeile 66 der Datei box_support.h.

◆ WaitResult

typedef int WaitResult

Definiert in Zeile 266 der Datei thread.h.

Dokumentation der Aufzählungstypen

◆ anonymous enum

anonymous enum
Aufzählungswerte
OpenAllBoxes 
OpenAllOutDevices 
OpenAllInDevices 

Definiert in Zeile 1020 der Datei Box.h.

1020  {
1021  OpenAllBoxes = 0x01,
1022  OpenAllOutDevices = 0x02,
1023  OpenAllInDevices = 0x04
1024  };

◆ anonymous enum

anonymous enum
Aufzählungswerte
none 
Logic 
CurrentLogic 

Definiert in Zeile 475 der Datei Box.h.

◆ anonymous enum

anonymous enum
Aufzählungswerte
sounding 
silent 
invalid 

Definiert in Zeile 60 der Datei box_support.h.

◆ ARType

enum ARType
Aufzählungswerte
ARNormal 
ARSlur 
ARTenuto 
ARPortato 
ARStaccatto 

Definiert in Zeile 60 der Datei GIS_Head.h.

◆ boxidtype

Aufzählungswerte
IDTypeSession 
IDTypeFile 

Definiert in Zeile 219 der Datei Box.h.

◆ BoxType

Aufzählungswerte
MIN_BOX 
NewBox 
NoBox 
GmnBox 
Box0 

Definiert in Zeile 120 der Datei Box.h.

121  {
122  MIN_BOX = -3,
123  NewBox = -3,
124  NoBox,
125  GmnBox,
126  Box0 = 0
127  };

◆ ChangedFlags

Aufzählungswerte
BoxChanged 
LogicChanged 
KeysChanged 
ActionChanged 

Definiert in Zeile 227 der Datei Box.h.

◆ devidtype

Aufzählungswerte
IDTypeSession 
IDTypeFile 
IDTypeHardware 

Definiert in Zeile 509 der Datei Device.h.

◆ DevType

Aufzählungswerte
DTNotSet 
DTUnknown 
DTMidiPort 
DTMidiFile 
DTGis 

Definiert in Zeile 93 der Datei Device.h.

◆ GisType

enum GisType
Aufzählungswerte
GTNull 
GTUnknown 
GTSequenz 
GTSegment 
GTTag 
GTTagBegin 
GTTagEnd 
GTNote 
GTParaInt 
GTParaReal 
GTParaStr 
GTComma 

Definiert in Zeile 98 der Datei GIS.h.

99 {
100  GTNull,
101  GTUnknown, // 1
102  GTSequenz, // 2
103  GTSegment,
104  GTTag,
105  GTTagBegin, // 5
106  GTTagEnd,
107  GTNote, // 7
108  GTParaInt,
109  GTParaReal,
110  GTParaStr, // 10
111  GTComma
112 };
Definition: GIS.h:107
Definition: GIS.h:103
Definition: GIS.h:104
Definition: GIS.h:100
Definition: GIS.h:106
Definition: GIS.h:111
Definition: GIS.h:101
Definition: GIS.h:108
Definition: GIS.h:102
Definition: GIS.h:110

◆ interval_type_constants

◆ KeyboardFlags

Aufzählungswerte
KeyboardNoLogic 
KeyboardLogic 
KeyboardAny 

Definiert in Zeile 571 der Datei Box.h.

571  {
572  KeyboardNoLogic, // Execute only logics
573  KeyboardLogic, // Execute only tone systems
574  KeyboardAny // Any possible action
575  };

◆ MutaborModeType

Aufzählungswerte
DeviceUnregistered 
DeviceInitializing 
DeviceStop 
DevicePlay 
DevicePause 
DeviceCompileError 
DeviceTimingError 
DeviceKilled 

Definiert in Zeile 79 der Datei Device.h.

79  {
80  DeviceUnregistered = -1, //< Unregistered device – currently unused
81  DeviceInitializing, //< Intitialization phase (e.g. thread creation)
82  DeviceStop, //< Device is OK, but no playback.
83  DevicePlay, //< Playback is running
84  DevicePause, //< Playback is paused
85  DeviceCompileError, //< Error while compiling/decoding the file (file propably corrupted)
86  DeviceTimingError, //< Timing problems e.g. backwards runnig time in a file. May be reset after Stop()
87  DeviceKilled //< A problem that makes the device (probably) unusable.
88  };

◆ RouteType

Type of route input filter.

Aufzählungswerte
RTall 

all events will pass

RTelse 

all unhandled events will pass

RTchannel 

use only a certain channel range (depends on the input device type)

RTstaff 

use only a certain staff/track/… range (depends on the input device type)

Definiert in Zeile 79 der Datei Route.h.

80  {
81  RTall,
82  RTelse,
83  RTchannel,
84  RTstaff
85  };
use only a certain staff/track/… range (depends on the input device type)
Definition: Route.h:84
all events will pass
Definition: Route.h:81
use only a certain channel range (depends on the input device type)
Definition: Route.h:83
all unhandled events will pass
Definition: Route.h:82

◆ ThreadKind

enum ThreadKind

Definiert in Zeile 252 der Datei thread.h.

252 {};

Dokumentation der Funktionen

◆ Acc2Int()

int Acc2Int ( const std::string acc)

Definiert in Zeile 308 der Datei GIS.cpp.

Wird benutzt von GisNote::GetKey().

310 {
311  if ( acc.empty() ) return 0;
312 
313  int i = 0;
314 
315 #ifdef WX
316  for (size_t j = 0; j < acc.length(); j++)
317 #else
318  for (int j = 0; acc[j]; j++)
319 #endif
320  {
321 
322  if ( acc[j] == '&' )
323  i--;
324  else if ( acc[j] == '#' )
325  i++;
326  }
327  return i;
328 }

◆ ActionToString()

std::string mutabor::BoxClass::ActionToString ( ChangedCallback::action action)

Definiert in Zeile 908 der Datei Box.cpp.

Benutzt string.

908  {
909  std::string retval = action->name;
910  return retval;
911  }
#define string

◆ Activate()

virtual void mutabor::BoxClass::Activate ( )
inlinevirtual

Activate the current box.

This method is called when a box is being activated. Its implementation should be done in the user code. Otherwise its just a no-op function.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 691 der Datei Box.h.

Benutzt runtime_error und string.

691 {}

◆ ActivateAll()

bool mutabor::BoxClass::ActivateAll ( bool  isRealtime)
static

Activate all boxes.

This resets the action traces of all boxes.

Zu beachten
Code should be taken from MutFrame::DoActivate
Parameter
isRealtimeShall non-realtime devices (e.g., file devices) act in realtime mode or not
Rückgabewerte
trueif Activation succeeded
falseotherwise

Definiert in Zeile 525 der Datei Box.cpp.

Benutzt mutabor::CurrentTime, mutabor::OpenAll(), mutabor::OpenAllBoxes, mutabor::OpenAllInDevices, mutabor::OpenAllOutDevices, mutabor::CurrentTimer::Reset() und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von mutaborGUI::MutFrame::CmDoActivate().

525  {
526  CurrentTime.UseRealtime(realtime);
528  BoxClass_CallReset callreset;
529 
530  std::for_each(boxList.begin(),boxList.end(),callreset);
531  //AktionenInit();
532 
533  // In batch mode Batch Play handles open and close.
534  bool retval = OpenAll(OpenAllBoxes
535  | (realtime?
538  : 0)) ;
539 
540  if (!boxList.empty()) {
541  mutabor::Box b = boxList.front();
542  if (b) b->Activate();
543  }
544  return retval;
545  }
static listtype boxList
Definition: Box.h:811
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
bool OpenAll(int mode)
Definition: Box.cpp:478
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
void Reset()
Reset the current time to epoch.
Definition: timing.h:687
CurrentTimer CurrentTime
Definition: timing.cpp:43

◆ Add() [1/6]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Add ( OutputDevice out)
virtual

add a new output device

Definiert in Zeile 141 der Datei Route.cpp.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::Add().

141  {
142  Out = out;
143  }
mutabor::OutputMidiFile * out
OutputDevice Out
Definition: Route.h:466

◆ Add() [2/6]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual void mutabor::TRouteClass< I, O, B >::Add ( InputDevice in)
virtual

add a new input device

◆ Add() [3/6]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual void mutabor::TRouteClass< I, O, B >::Add ( Box b)
virtual

add a new box

◆ Add() [4/6]

void mutabor::BoxClass::Add ( Route route)
virtual

add a route

Definiert in Zeile 133 der Datei Box.cpp.

Benutzt DEBUGLOG, mutASSERT(), route und TRACEC.

Wird benutzt von mutaborGUI::BoxData::GetShapes().

133  {
134  BoxLock lock(this);
135  DEBUGLOG (smartptr, "Route; %p" ,(void*)route.get());
136 #ifdef DEBUG
137  routeListType::const_iterator i =
138  std::find(routes.begin(),routes.end(),route);
139  mutASSERT(i == routes.end());
140  mutASSERT(IsInBoxList(this));
141 #endif
142  TRACEC;
143  routes.push_back(route);
144  DEBUGLOG (smartptr, "Route; %p saved" ,(void*)route.get());
145  }
mutabor::Route route
#define DEBUGLOG(level,...)
Definition: debug.h:294
#define TRACEC
Definition: debug.h:300
mutASSERT(p.get_intervals==cmp)
routeListType routes
Definition: Box.h:819
static bool IsInBoxList(const Box b)
Definition: Box.h:869

◆ Add() [5/6]

virtual void mutabor::Device::Add ( Route route)
pure virtual

◆ Add() [6/6]

template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::Add ( Route route)
virtual

add a route

Implementiert mutabor::Device.

Definiert in Zeile 135 der Datei Device.cpp.

Wird benutzt von mutabor::CommonTypedDeviceAPI< InputDeviceClass >::Replace().

135  {
136  DEBUGLOG (smartptr, "Route; %p" ,(void*)route.get());
137 #ifdef DEBUG
138  routeListType::const_iterator i =
139  std::find(routes.begin(),routes.end(),route);
140  mutASSERT(i == routes.end());
141  mutASSERT(IsInDeviceList(static_cast<thistype *>(this)));
142 #endif
143  TRACEC;
144  routes.push_back(route);
145  DEBUGLOG (smartptr, "Route; %p saved" ,(void*)route.get());
146  }
mutabor::Route route
#define DEBUGLOG(level,...)
Definition: debug.h:294
routeListType routes
Definition: Device.h:656
#define TRACEC
Definition: debug.h:300
mutASSERT(p.get_intervals==cmp)
static bool IsInDeviceList(const DevicePtr dev)
Definition: Device.h:826

◆ add() [1/2]

void mutabor::InputDeviceClass::current_keys_type::add ( int  key,
int  velocity,
int  unique_id,
Route R,
InputDevice  i,
const ChannelData c,
void *  userdata 
)
inline

Definiert in Zeile 1069 der Datei Device.h.

Benutzt DEBUGLOG.

Wird benutzt von mutabor::InputDeviceClass::Panic().

1075  {
1076  map.insert(entry(key,
1077  unique_id,
1078  velocity,
1079  R,
1080  i,
1081  &c,
1082  userdata));
1083  DEBUGLOG(routing,("(key = %d, channel = %lu, id = %lu)"),
1084  key,
1085  (unsigned long)R->get_session_id(),
1086  (unsigned long)unique_id);
1087  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
void * userdata
Definition: Device.h:679
#define key

◆ add() [2/2]

void mutabor::InputDeviceClass::current_keys_type::add ( entry  e)
inline

Definiert in Zeile 1088 der Datei Device.h.

1088  {
1089  map.insert(e);
1090  }

◆ add_value()

void mutabor::BoxClass::tone::add_value ( mutint64 retval) const
inline

Definiert in Zeile 206 der Datei Box.h.

Benutzt mutabor_active_tone.

206  {
207  if (active == hidden::mutabor_active_tone) {
208  retval += value;
209  }
210  }

◆ AddGis()

void ChordNote::AddGis ( GisToken token)

Definiert in Zeile 855 der Datei GIS_Head.cpp.

Benutzt mutabor::CurrentTime und GisToken::Sep.

Wird benutzt von GisWriteHead::GetFreeNote().

856 {
857  *Cursor = token;
858  Cursor = &((*Cursor)->Next);
859  LastSep = &(token->Sep);
860  CurrentTime = 0;
861 }
GisToken ** Cursor
Definition: GIS_Head.h:437
std::string * LastSep
Definition: GIS_Head.h:447
std::string Sep
Definition: GIS.h:121
mutabor::frac CurrentTime
Definition: GIS_Head.h:439

◆ AddNote()

void mutabor::BoxClass::AddNote ( int  note,
size_t  id,
size_t  channel,
void *  userdata 
)
inline

Definiert in Zeile 561 der Datei Box.h.

Benutzt AddKey().

561  {
562  scoped_watchdog lock(this);
563  hidden::AddKey(box, note, id, channel, userdata);
564  }
mutabor_box_type * box
Definition: Box.h:816
void AddKey(mutabor_box_type *box, int taste, size_t id, size_t channel, void *userdata)
Definition: Execute.cpp:984

◆ AddStr()

void AddStr ( std::string Target,
int  Pos,
const std::string Source 
)
inline

Definiert in Zeile 81 der Datei GSP.cpp.

Benutzt DEBUGLOG2 und mutUnused.

Wird benutzt von IsLetter().

82 {
83  mutUnused(Pos);
84  DEBUGLOG2(other,("%s + %s"), Target.c_str(), Source.c_str());
85  Target += Source;
86  DEBUGLOG2(other,("=%s"), Target.c_str());
87 }
#define mutUnused(expr)
Definition: Defs.h:106
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ AddTag()

TagList* AddTag ( TagList **  list,
GisTag tag 
)

Definiert in Zeile 474 der Datei GIS_Head.cpp.

Benutzt GTTag, TagListData::Next, RemoveTag(), TagListData::Tag und GisTag::Type().

Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().

475 {
476  if ( *list && (*list)->Tag->Type() == GTTag && tag->Type() == GTTag )
477  RemoveTag(list);
478 
479  TagList *TopTag = new TagList;
480 
481  TopTag->Next = *list;
482 
483  TopTag->Tag = tag;
484 
485  *list = TopTag;
486 
487  return *list;
488 }
Definition: GIS.h:104
struct TagListData * Next
Definition: GIS_Head.h:148
GisTag * Tag
Definition: GIS_Head.h:149
struct TagListData TagList
TagList * RemoveTag(TagList **list)
Definition: GIS_Head.cpp:463
virtual GisType Type() const
Definition: GIS.h:307

◆ AddTime() [1/2]

void GisWriteHead::AddTime ( mutabor::frac  dTime)

Definiert in Zeile 1422 der Datei GIS_Head.cpp.

Benutzt mutabor::CurrentTime.

Wird benutzt von mutabor::OutputGis::do_AddTime().

1423 {
1424  TotalTime += dTime;
1425  CurrentTime += dTime;
1426 
1427  if ( ChordNotes ) ChordNotes->CountOnTime(dTime);
1428 
1429  if ( Next ) Next->AddTime(dTime);
1430 }
ChordNote * ChordNotes
Definition: GIS_Head.h:325
void CountOnTime(mutabor::frac dTime)
Definition: GIS_Head.cpp:819
void AddTime(mutabor::frac dTime)
Definition: GIS_Head.cpp:1422
GisWriteHead * Next
Definition: GIS_Head.h:317
mutabor::frac CurrentTime
Definition: GIS_Head.h:321
mutabor::frac TotalTime
Definition: GIS_Head.h:321

◆ AddTime() [2/2]

void mutabor::OutputDeviceClass::AddTime ( frac  time)
inline

Definiert in Zeile 894 der Datei Device.h.

894  {
895  ScopedLock<OutputDeviceClass> lock(*this);
896  do_AddTime(time);
897  }
virtual void do_AddTime(frac time)=0

◆ all_handle_event()

static void mutabor::OutputDeviceClass::all_handle_event ( event  e)
inlinestatic

Definiert in Zeile 912 der Datei Device.h.

Wird benutzt von mutabor::InputMidiPort::Proceed(), mutabor::CommonMidiInput< InputDeviceClass >::Proceed() und mutabor::InputMidiFile::Proceed().

912  {
913  for (OutputDeviceList::iterator i = deviceList.begin();
914  i != deviceList.end(); ++i) {
915  (*i) -> handle_event (e);
916  }
917 
918  }
void handle_event(event e)
Definition: Device.h:907

◆ AppendToBoxList()

void mutabor::BoxClass::AppendToBoxList ( Box  dev)
staticprotected

Definiert in Zeile 283 der Datei Box.cpp.

Benutzt DEBUGLOG2, isDebugFlag, print_stacktrace() und UNREACHABLECT.

Wird benutzt von mutabor::BoxClass::BoxClass().

284  {
285 #ifdef DEBUG
286  DEBUGLOG2(routing,("Adding box %p"),b.get());
287  print_stacktrace(isDebugFlag(smartptr));
288  typename listtype::iterator i =
289  FindInBoxList(b);
290  if (i != boxList.end()) {
292  }
293 #endif
294  boxList.push_back(b);
295  }
static listtype boxList
Definition: Box.h:811
#define DEBUGLOG2(level,...)
Definition: debug.h:295
#define isDebugFlag(level)
Definition: debug.h:186
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:862
#define UNREACHABLECT(type)
Definition: debug.h:309
BoxListType listtype
Definition: Box.h:252
void print_stacktrace(bool flag)
Definition: debug.cpp:190

◆ AppendToDeviceList()

template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::AppendToDeviceList ( DevicePtr  dev)
staticprotected

Definiert in Zeile 294 der Datei Device.cpp.

295  {
296 #ifdef DEBUG
297  typename listtype::iterator i =
298  FindInDeviceList(dev);
299  if (i != deviceList.end()) {
301  }
302 #endif
303  deviceList.push_back(dev);
304  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:819
static listtype deviceList
Definition: Device.h:697
#define UNREACHABLECT(type)
Definition: debug.h:309

◆ AppendToRouteList()

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::AppendToRouteList ( Route  route)
staticprotected

Definiert in Zeile 283 der Datei Route.cpp.

284  {
285 #ifdef DEBUG
286  typename TRouteClass<I, O>::routeListType::iterator r =
287  std::find(routeList.begin(),
288  routeList.end(),
289  route.get());
290  mutASSERT(r == routeList.end());
291 #endif
292  TRACET(thistype);
294  }
mutabor::Route route
void push_back(const value_type &e)
static routeListType routeList
Definition: Route.h:475
mutASSERT(p.get_intervals==cmp)
#define TRACET(type)
Definition: debug.h:301
TRouteClass thistype
Definition: Route.h:114

◆ BatchPlay()

bool mutabor::InputDeviceClass::BatchPlay ( )
static

Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex route environment.

In contrast to the normal Play() function this function doesn't use timers, but simulates timing.

Noch zu erledigen:
{find a better place for BatchPlay and RealtimePlay: we should not reference CurrentTime from Device.

{h,cpp,-inlines.h} }

Noch zu erledigen:
implement event types that use timestamps

Definiert in Zeile 442 der Datei Device.cpp.

Benutzt mutabor::CurrentTime, mutabor::CurrentTimer::Get(), mutabor::InClose(), mutASSERT(), mutabor::OpenAll(), mutabor::OpenAllInDevices, mutabor::OpenAllOutDevices, mutabor::OutClose(), mutabor::CurrentTimer::Set(), mutabor::CurrentTimer::Stop() und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von main(), myDevice::Pause(), InputMidiFileTest::testAfterTouch(), InputMidiFileTest::testAllControllerOff(), InputMidiFileTest::testBankSelect(), InputMidiFileTest::testBatchPlay1(), OutputMidiFileTest::testBatchPlay1(), InputMidiFileTest::testBoxMidiIn(), InputMidiFileTest::testBug019010(), InputMidiFileTest::testControllerPlay(), InputMidiFileTest::testRpnNrpn() und InputMidiFileTest::testSysEx().

442  {
443  // Note::keep this function in sync with Activate (Runtime.cpp)
444  typedef std::pair <CurrentTimer::time_point, InputDevice> queue_element;
445  typedef std::priority_queue< queue_element,
446  std::deque<queue_element>,
447  std::greater<queue_element> > batch_queue;
448  // Currenttime is used by output devices to keep track of the time
450  CurrentTime.UseRealtime(false);
452 
453 
455 
456  batch_queue queue;
457 
458  for (InputDeviceList::iterator i = deviceList.begin();
459  i != deviceList.end(); i++) {
460  (*i)->Play();
461  queue.push(queue_element(CurrentTimer::time_point(),*i));
462  }
463 
465 
466  while (!queue.empty()) {
467  queue_element element = queue.top();
468  queue.pop();
469  mutASSERT(element.first >= CurrentTime.Get());
470  CurrentTime = element.first;
471  microseconds delta = element.second->PrepareNextEvent();
472  if (delta != NO_DELTA()) {
473  mutASSERT(delta >= microseconds::zero());
474  element.first += delta;
475  queue.push(element);
476  }
477  }
478 
479  for (InputDeviceList::iterator i = deviceList.begin();
480  i != deviceList.end(); i++) {
481  (*i)->Stop();
482  }
483 
486  // mutabor::BoxClose(); // will be handled otherways.
488 
489 // GlobalReset();
490 
491 
492 
493  return true;
494  }
void OutClose()
Definition: Device.cpp:698
void Stop()
Dummy function for stopping the timer.
Definition: timing.h:710
static boost::chrono::microseconds NO_DELTA()
Definition: Device.h:1254
base::time_point time_point
Definition: timing.h:617
mutASSERT(p.get_intervals==cmp)
bool OpenAll(int mode)
Definition: Box.cpp:478
void InClose()
Definition: Device.cpp:734
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
void Set(const duration &d=duration(0))
Set the current time.
Definition: timing.h:663
time_point Get()
Return the current time in μs.
Definition: timing.h:701
base::duration duration
Definition: timing.h:614
CurrentTimer CurrentTime
Definition: timing.cpp:43

◆ begin() [1/2]

iterator mutabor::InputDeviceClass::current_keys_type::begin ( )
inline

Definiert in Zeile 1119 der Datei Device.h.

Wird benutzt von mutabor::InputDeviceClass::Panic().

1119 { return map.begin(); }

◆ begin() [2/2]

const_iterator mutabor::InputDeviceClass::current_keys_type::begin ( ) const
inline

Definiert in Zeile 1120 der Datei Device.h.

1120 { return map.begin(); }

◆ BeginParameter()

int BeginParameter ( )

Definiert in Zeile 619 der Datei GIS.cpp.

Benutzt AddStr, DEBUGLOG2, GisToken::Sep und TagSep.

Wird benutzt von ReadTag() und GisComma::ToString().

620 {
621  DEBUGLOG2(gmnfile,("<"));
622  AddStr(TagSep, ("<"), Sep);
623  return 0;
624 }
std::string Sep
Definition: GSP.cpp:39
#define AddStr(s1, s2, s3)
Definition: GIS.cpp:492
std::string TagSep
Definition: GIS.cpp:111
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ BeginRange()

int BeginRange ( )

Definiert in Zeile 638 der Datei GIS.cpp.

Benutzt AddStr, Clear(), DEBUGLOG2, GisTagBegin::End, LastOpenRange, GisToken::Next, GisToken::Sep, Tag(), TagMode, TagName und TagSep.

Wird benutzt von DoParse() und GisComma::ToString().

639 {
640  DEBUGLOG2(gmnfile,("( "));
641 
642  if ( LastPara )
643  AddStr(LastPara->Sep, ("("), Sep);
644  else if ( Para )
645  AddStr(Para->Sep, ("("), Sep);
646  else
647  AddStr(TagSep, ("("), Sep);
648 
650 
651  *Current = Tag;
652 
653  Current = &(Tag->Next);
654 
655  Tag->End = LastOpenRange;
656 
657  LastOpenRange = Tag;
658 
659  Clear(&TagName);
660 
661  Clear(&TagSep);
662 
663  Para = 0;
664 
665  LastPara = 0;
666 
667  TagMode = 0;
668 
669  return 0;
670 }
char TagMode
Definition: GIS.cpp:109
GisTagBegin * LastOpenRange
Definition: GIS.cpp:108
std::string Sep
Definition: GSP.cpp:39
GisToken * End
Definition: GIS.h:343
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
#define AddStr(s1, s2, s3)
Definition: GIS.cpp:492
std::string TagSep
Definition: GIS.cpp:111
std::string TagName
Definition: GIS.cpp:110
GisToken * LastPara
Definition: GIS.cpp:112
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295
std::string Sep
Definition: GIS.h:121
void Clear(std::string *s)
Definition: GIS.cpp:493

◆ BeginSegment()

int BeginSegment ( )

Definiert in Zeile 555 der Datei GIS.cpp.

Benutzt BuildTag(), GisSegment::Contents, DEBUGLOG2, GisToken::Sep und TagMode.

Wird benutzt von DoParse() und GisComma::ToString().

556 {
557  DEBUGLOG2(gmnfile,("{"));
558 
559  if ( TagMode ) BuildTag();
560 
561  GisSegment *Seg = new GisSegment(0, Sep, LastOpenBracket);
562 
563  LastOpenBracket = Seg;
564 
565  *Current = Seg;
566 
567  Current = &(Seg->Contents);
568 
569  return 0;
570 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
int BuildTag()
Definition: GIS.cpp:530
GisToken * Contents
Definition: GIS.h:225
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ BeginSequenz()

int BeginSequenz ( )

Definiert in Zeile 585 der Datei GIS.cpp.

Benutzt BuildTag(), GisSequenz::Contents, DEBUGLOG2, GisToken::Sep und TagMode.

Wird benutzt von DoParse() und GisComma::ToString().

586 {
587  DEBUGLOG2(gmnfile,("["));
588 
589  if ( TagMode ) BuildTag();
590 
591  GisSequenz *Seq = new GisSequenz(0, Sep, LastOpenBracket);
592 
593  LastOpenBracket = Seq;
594 
595  *Current = Seq;
596 
597  Current = &(Seq->Contents);
598 
599  return 0;
600 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
int BuildTag()
Definition: GIS.cpp:530
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295
GisToken * Contents
Definition: GIS.h:179

◆ BoxChangedAction() [1/2]

virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction ( int  flags)
pure virtual

◆ BoxChangedAction() [2/2]

virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction ( const char *  mutUNUSEDaction)
inlinevirtual

Definiert in Zeile 249 der Datei Box.h.

249 {}

◆ BoxClass()

mutabor::BoxClass::BoxClass ( int  id = -1)
protected

Definiert in Zeile 857 der Datei Box.cpp.

Benutzt mutabor::BoxClass::AppendToBoxList(), mutabor::BoxClass::box, mutabor_initialize_box(), mutabor::BoxClass::set_routefile_id() und mutabor_box_type_struct::userdata.

Wird benutzt von mutabor::BoxFactory::DoCreateBox().

857  : box(NULL),
858  session_id(),
860  routes(),
861  open (false),
862  current_logic(),
866  updateflags(0),
867  callbacks(),
869  mutex(),
870  logic_timing(-1),
871  loop_timeout(500000),
872  loopguard(0)
873  {
874  AppendToBoxList(this);
875  box = (mutabor_box_type *) malloc(sizeof(mutabor_box_type));
876  if (!box) return;
878  box->userdata = this;
879  set_routefile_id(id);
880  }
int logic_timing
Definition: Box.h:841
CompileCallback * current_compile_callback
Definition: Box.h:838
std::string current_logic
Definition: Box.h:821
watchdog< Box > * loopguard
Definition: Box.h:844
Mutabor box type.
Definition: box.h:115
mutint64 loop_timeout
Definition: Box.h:843
virtual void set_routefile_id(int id)
Definition: Box.cpp:100
mutabor_box_type * box
Definition: Box.h:816
int current_key_tonesystem
Definition: Box.h:823
void mutabor_initialize_box(mutabor_box_type *box, int id)
Definition: box.cpp:153
unsigned int updateflags
Definition: Box.h:825
Mutex mutex
Definition: Box.h:840
std::list< ChangedCallback * > callbacks
Definition: Box.h:826
idtype< BoxClass > session_id
Definition: Box.h:817
static void AppendToBoxList(Box dev)
Definition: Box.cpp:283
routeListType routes
Definition: Box.h:819
int current_key_logic
Definition: Box.h:824
int routefile_id
Definition: Box.h:818
std::string current_tonesystem
Definition: Box.h:822

◆ BoxClose()

void mutabor::BoxClose ( )
inline

Definiert in Zeile 1012 der Datei Box.h.

1013  {
1014  const BoxListType& list = BoxClass::GetBoxList();
1015  for (BoxListType::const_iterator b = list.begin();
1016  b != list.end(); b++)
1017  (*b)->Close();
1018  }
std::vector< Box > BoxListType
Definition: Box.h:131

◆ BoxFactory()

mutabor::BoxFactory::BoxFactory ( size_t  id = 0)

Definiert in Zeile 997 der Datei Box.cpp.

Benutzt UNREACHABLEC.

997  {
998  // if (type < 0) type = 0;
999  if (factories.size() <= type) {
1000  factories.resize(type+1,
1001  NULL);
1002  }
1003  if (factories[type]) {
1004  UNREACHABLEC;
1005  return;
1006  }
1007  factories[type] = this;
1008 
1009  }
static factorylist factories
Definition: Box.h:962
#define UNREACHABLEC
Definition: debug.h:310

◆ BoxLock()

mutabor::BoxClass::BoxLock::BoxLock ( BoxClass b)
inline

Definiert in Zeile 790 der Datei Box.h.

Benutzt mutabor_box_flags::auto_reset_break_logic, mutabor::BoxClass::box, mutabor_box_flags::break_logic und mutabor_box_type_struct::flags.

790  :ScopedLock(b->mutex),
791  box(b) {
792  if (b && b->box && b->box->flags.auto_reset_break_logic)
793  b->box->flags.break_logic = 0;
794  }
ScopedLock(mutex_type &m)
Definition: thread.h:259

◆ BuildTag()

int BuildTag ( )

Definiert in Zeile 530 der Datei GIS.cpp.

Benutzt Clear(), DEBUGLOG2, Tag(), TagMode, TagName und TagSep.

Wird benutzt von BeginSegment(), BeginSequenz(), Comma(), EndRange(), EndSegment(), EndSequenz(), NextSequenz(), Note() und Tag().

531 {
532  DEBUGLOG2(gmnfile,("TagName.len %d, '%s'"),(int)TagName.length(),TagName.c_str());
533  GisTag *Tag = new GisTag(TagName, Para, TagSep);
534  *Current = Tag;
535  Current = &(Tag->Next);
536  Clear(&TagName);
537  Clear(&TagSep);
538  Para = 0;
539  LastPara = 0;
540  TagMode = 0;
541  return 0;
542 }
char TagMode
Definition: GIS.cpp:109
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
GisToken * Para
Definition: GIS.cpp:112
std::string TagSep
Definition: GIS.cpp:111
std::string TagName
Definition: GIS.cpp:110
Definition: GIS.h:266
GisToken * LastPara
Definition: GIS.cpp:112
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295
void Clear(std::string *s)
Definition: GIS.cpp:493

◆ ChangedCallback()

mutabor::BoxClass::ChangedCallback::ChangedCallback ( Box b)
inline

Definiert in Zeile 233 der Datei Box.h.

233  :box(b) {
234  if (b) b->Register(this);
235  }

◆ ChannelData()

mutabor::ChannelData::ChannelData ( int  sound = -1)
inline

Definiert in Zeile 108 der Datei Device.h.

109  :controller(128,-1),
110  controller_changed(256,-1),
111  first_unchanged(0),
112  looped(false),
113  data_is_rpn(true),
114  Sound(sound),
115  bank_coarse(-1),
116  bank_fine(-1),
117  bend(0)
118  {
119  /*
120  controller[midi::HOLD_PEDAL_ON_OFF] = sustain;
121  if (sustain != 0) {
122  controller_changed[first_unchanged]
123  = midi::HOLD_PEDAL_ON_OFF;
124  first_unchanged++;
125  }
126  */
127  }
size_t first_unchanged
Definition: Device.h:497
controller_vector controller
Definition: Device.h:495
uint8_t bank_fine
Definition: Device.h:502
controller_vector controller_changed
Definition: Device.h:496
uint8_t bank_coarse
Definition: Device.h:501

◆ CharIn()

int CharIn ( char  c,
const char *  s 
)
inline

Definiert in Zeile 89 der Datei GSP.cpp.

Benutzt DEBUGLOG2.

Wird benutzt von DoParse(), GetSep(), IsLetter() und ReadNote().

90 {
91  DEBUGLOG2(other,("'%c' is in '%s' at position %d, returning %d"),
92  c, s, (int)(strchr(s, c)-s), (int)(strchr(s, c) != NULL));
93  return strchr(s, c) != NULL;
94 }
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ Check()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
char mutabor::TRouteClass< I, O, B >::Check ( int  i)
inline

Definiert in Zeile 161 der Datei Route.h.

161  {
162  return (IFrom <= i && i <= ITo);
163  }

◆ CheckCloseAlter()

void ChordNote::CheckCloseAlter ( )

Definiert in Zeile 863 der Datei GIS_Head.cpp.

Benutzt CNAlter, Sep und string.

864 {
865  if ( Status & CNAlter ) {
866  std::string s = "";
868 
869  if ( !LastSep ) Sep = &s;
870 
871  AddGis(new GisTagEnd((GisTagBegin*)*AlterBegin, *Sep));
872 
873 
874  if ( Sep->size() ) {
875  Sep->clear();
876  }
877 
878 #if 0
879  if ( *Sep.length() ) {
880  free(*Sep);
881  *Sep = 0;
882  }
883 
884 #endif
885  Status -= CNAlter;
886 
887  Pitch = 0;
888  }
889 }
#define string
std::string * LastSep
Definition: GIS_Head.h:447
GisToken ** AlterBegin
Definition: GIS_Head.h:444
std::string Sep
Definition: GSP.cpp:39
char Status
Definition: GIS_Head.h:443
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:855
double Pitch
Definition: GIS_Head.h:450
Definition: GIS.h:387
#define CNAlter
Definition: GIS_Head.h:424

◆ CheckCloseTie()

void ChordNote::CheckCloseTie ( )

Definiert in Zeile 891 der Datei GIS_Head.cpp.

Benutzt Sep, string und TTtie.

892 {
893  if ( nTie > 1 ) {
894  // close alter
895  CheckCloseAlter();
896  // insert begin range
897  *TieBegin = new GisTagBegin(TTtie, 0, 0, "(", *TieBegin);
898  // add end range
899  std::string s = "";
901 
902  if ( !LastSep ) Sep = &s;
903 
904  AddGis(new GisTagEnd((GisTagBegin*)*TieBegin, *Sep));
905 
906 #ifdef WX
907  if ( Sep->size() ) {
908  *Sep="";
909  }
910 
911 #else
912  if ( *Sep ) {
913  free(*Sep);
914  *Sep = 0;
915  }
916 
917 #endif
918  }
919 
920  TieBegin = Cursor;
921 
922  nTie = 0;
923 }
GisToken ** Cursor
Definition: GIS_Head.h:437
#define string
std::string * LastSep
Definition: GIS_Head.h:447
void CheckCloseAlter()
Definition: GIS_Head.cpp:863
std::string Sep
Definition: GSP.cpp:39
#define TTtie
Definition: GIS.h:78
GisToken ** TieBegin
Definition: GIS_Head.h:445
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:855
Definition: GIS.h:387
int nTie
Definition: GIS_Head.h:446

◆ CheckError()

int CheckError ( int  nr)

Definiert in Zeile 157 der Datei GSP.cpp.

Benutzt GspError, GspErrorLine, GspErrorLineNr, GspErrorPos, PossibleErrorLine, PossibleErrorLineNr und PossibleErrorPos.

Wird benutzt von DoParse(), GspParse(), ReadNote(), ReadParaNumber(), ReadParaStr() und ReadTag().

158 {
159  if ( !nr ) return 0; // no error
160  if ( GspError ) return GspError;
161  GspError = nr;
165  return nr;
166 }
int GspErrorPos
Definition: GSP.cpp:30
int GspError
Definition: GSP.cpp:32
std::string GspErrorLine
Definition: GSP.cpp:31
int PossibleErrorLineNr
Definition: GSP.cpp:35
std::string PossibleErrorLine
Definition: GSP.cpp:37
int PossibleErrorPos
Definition: GSP.cpp:36
int GspErrorLineNr
Definition: GSP.cpp:29

◆ CheckOut()

bool OutputMidiFileTest::CheckOut ( std::string  s,
int  line,
const char *  file 
)

Definiert in Zeile 4782 der Datei DevMidFTest.cpp.

Benutzt DEBUGLOG, in, MakePrintableC(), mutUnused, out, mutabor::OutputMidiFile::Save(), StreamToHex() und string.

4782  {
4783  mutUnused(file);
4784  mutUnused(line);
4785  std::stringstream stream( std::ios_base::in | std::ios_base::out |
4786  std::ios_base::binary );
4787  out->Save(stream);
4788  std::string tmp = StreamToHex(stream);
4789  bool retval = (tmp == s);
4790  if (!retval) {
4791  DEBUGLOG(always,"\n"
4792 "%s:%d: Stream check failed.\n"
4793 "\n"
4794 "Expected:\n"
4795 "|-------------------\n"
4796 "%s"
4797 "|-------------------\n"
4798 "\n"
4799 "Got:\n"
4800 "|-------------------\n"
4801 "%s"
4802 "|-------------------\n"
4803 "\n"
4804 ,
4805  file,
4806  line,
4807  MakePrintableC(s).c_str(),
4808  MakePrintableC(tmp).c_str());
4809  }
4810  return retval;
4811 }
#define string
#define DEBUGLOG(level,...)
Definition: debug.h:294
mutabor::InputMidiFile * in
#define mutUnused(expr)
Definition: Defs.h:106
virtual void Save(tree_storage &config)
Save current device settings in a tree storage.
Definition: DevMidF.cpp:303
mutabor::OutputMidiFile * out
std::string StreamToHex(std::istream &buf)
Definition: debug.cpp:380
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:244
std::string MakePrintableC(const std::string &s)
Definition: debug.cpp:414

◆ ChordNote()

ChordNote::ChordNote ( ChordNote first)

Definiert in Zeile 785 der Datei GIS_Head.cpp.

Benutzt ChordNote::Boss, ChordNote::BossPos, mutabor::CurrentTime und GMN_NO_KEY.

786 {
787  // copy data from first
788  Boss = first->Boss;
789  BossPos = first->BossPos;
790  Next = 0;
791  Data = 0;
792  Cursor = &Data;
794 
795  if ( TotalTime )
796  AddGis(new GisNote("_", "", 0, TotalTime, " ", 0));
797 
798  CurrentTime = 0;
799 
800  Boss->ChordPos = Boss->Cursor;
801 
802  Status =0;
803 
804  TieBegin = 0;
805 
806  nTie = 0;
807 
808  LastSep = 0;
809 
810  InstrId = -1;
811 
812  Taste = GMN_NO_KEY;
813 
814  Key = GMN_NO_KEY;
815 
816  Pitch = 0;
817 }
GisToken ** Cursor
Definition: GIS_Head.h:437
int Taste
Definition: GIS_Head.h:448
std::string * LastSep
Definition: GIS_Head.h:447
#define GMN_NO_KEY
Definition: GIS.h:89
GisToken ** ChordPos
Definition: GIS_Head.h:324
GisWriteHead * Boss
Definition: GIS_Head.h:438
GisToken * Data
Definition: GIS_Head.h:436
char Status
Definition: GIS_Head.h:443
mutabor::frac TotalTime
Definition: GIS_Head.h:440
int Key
Definition: GIS_Head.h:449
GisToken ** TieBegin
Definition: GIS_Head.h:445
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:855
int InstrId
Definition: GIS_Head.h:442
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken ** BossPos
Definition: GIS_Head.h:441
double Pitch
Definition: GIS_Head.h:450
ChordNote * Next
Definition: GIS_Head.h:435
Definition: GIS.h:423
mutabor::frac TotalTime
Definition: GIS_Head.h:321
int nTie
Definition: GIS_Head.h:446
mutabor::frac CurrentTime
Definition: GIS_Head.h:439

◆ Clear()

void Clear ( std::string s)

Definiert in Zeile 493 der Datei GIS.cpp.

Benutzt AddStr.

Wird benutzt von BeginRange(), BuildTag(), MutTextBox::GetKeys(), MutTextBox::GetToneSystem() und UnRavel().

494 {
495  *s = "";
496 }

◆ clear()

void mutabor::InputDeviceClass::current_keys_type::clear ( )
inline

Definiert in Zeile 1111 der Datei Device.h.

1111  {
1112  map.clear();
1113  }

◆ ClearBoxList()

static void mutabor::BoxClass::ClearBoxList ( )
inlinestatic

Definiert in Zeile 389 der Datei Box.h.

Benutzt mutASSERT() und mutabor::Panic().

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteLoad(), IMPLEMENT_APP(), compat30::LoadRoutes() und RouteTest::testDestroyAll().

389  {
390  while (!boxList.empty()) {
391 #ifdef DEBUG
392  Box d = boxList.front();
393 #endif
394  boxList.front()->Destroy();
395 #ifdef DEBUG
396  mutASSERT(boxList.empty() ||
397  d != boxList.front());
398 #endif
399  }
400  }
static listtype boxList
Definition: Box.h:811
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
mutASSERT(p.get_intervals==cmp)

◆ ClearDeviceList()

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
static void mutabor::CommonTypedDeviceAPI< T, P, L >::ClearDeviceList ( )
inlinestatic

Definiert in Zeile 800 der Datei Device.h.

800  {
801  while (!deviceList.empty()) {
802 #ifdef DEBUG
803  DevicePtr d = deviceList.front();
804 #endif
805  deviceList.front()->Destroy();
806 #ifdef DEBUG
807  mutASSERT(deviceList.empty() ||
808  d != deviceList.front());
809 #endif
810  }
811  }
static listtype deviceList
Definition: Device.h:697
mutASSERT(p.get_intervals==cmp)

◆ ClearRouteList()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
static void mutabor::TRouteClass< I, O, B >::ClearRouteList ( )
inlinestatic

Definiert in Zeile 446 der Datei Route.h.

446  {
447  TRACET(thistype);
448  Route d;
449  while (!routeList.empty()) {
450  mutASSERT(intrusive_ptr_get_refcount(d.get()) <= 1);
451  TRACET(thistype);
452  d = routeList.front();
453  TRACET(thistype);
454  d->Destroy();
455 
457  d != routeList.front());
458  }
459  mutASSERT(intrusive_ptr_get_refcount(d.get()) <= 1);
460  TRACET(thistype);
461  }
static routeListType routeList
Definition: Route.h:475
mutASSERT(p.get_intervals==cmp)
#define TRACET(type)
Definition: debug.h:301
TRouteClass thistype
Definition: Route.h:114
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:120

◆ Close() [1/5]

void mutabor::BoxClass::Close ( )
inline

Definiert in Zeile 438 der Datei Box.h.

438  {
439  BoxLock lock(this);
440  if (open)
441  DoClose();
442  open = false;
443  }
virtual void DoClose()
Definition: Box.cpp:445

◆ Close() [2/5]

virtual void mutabor::Device::Close ( )
pure virtual

◆ Close() [3/5]

void mutabor::OutputDeviceClass::Close ( )
inlinevirtual

◆ Close() [4/5]

void mutabor::OutputDeviceClass::Close ( bool  sync)
inline

Definiert in Zeile 935 der Datei Device.h.

935  {
936  ScopedLock<OutputDeviceClass> lock(*this);
937  do_Close(sync);
938  }
virtual void do_Close(bool sync=false)=0

◆ Close() [5/5]

virtual void mutabor::InputDeviceClass::Close ( )
inlinevirtual

Implementiert mutabor::Device.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, myDevice und myDevice.

Definiert in Zeile 1130 der Datei Device.h.

1130  {
1131  Stop();
1132  }
virtual void Stop()
Stop playback or recording of the device.
Definition: Device.h:1133

◆ CloseAll()

void mutabor::BoxClass::CloseAll ( )
static

Close all boxes.

This function deactivates all boxes.

Definiert in Zeile 519 der Datei Box.cpp.

Wird benutzt von mutabor::OpenAll().

519  {
520  BoxClass_CallClose callclose;
521  std::for_each(boxList.begin(),boxList.end(),callclose);
522  }
static listtype boxList
Definition: Box.h:811

◆ CloseAllSubs()

void CloseAllSubs ( GisWriteHead head)

Definiert in Zeile 1499 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::CloseSubs(), GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::CutOut(), GisWriteHead::Data, GetGisType(), GTSegment, h, GisWriteHead::Next, GisWriteHead::nSub und GisWriteHead::RemoveComma().

Wird benutzt von mutabor::OutputGis::do_Close() und GisWriteHead::GetKey().

1500 {
1501  while ( 1 ) {
1502  // search the lowest boss
1503  GisWriteHead *Boss = 0;
1504 
1505  for (GisWriteHead *H = head; H; H = H->Next)
1506  if ( H->nSub > 0 )
1507  Boss = H;
1508 
1509  if ( !Boss ) break;
1510 
1511  // check for "empty" boss
1512  if ( !Boss->Data && Boss->nSub == 1 ) {
1513  GisWriteHead *h = Boss->Next;
1514  Boss->Data = h->Data;
1515  Boss->nSub = 0;
1516  h->Data = 0;
1517  h->CutOut();
1518  delete h;
1519  continue;
1520  }
1521 
1522  // check for segment
1523  if ( GetGisType(*Boss->Cursor) != GTSegment ) {
1524  if ( Boss->Data && !Boss->CommaAtEnd ) {
1525  *Boss->Cursor = new GisComma(" ", 0);
1526  Boss->Cursor = &((*Boss->Cursor)->Next);
1527  }
1528 
1529  Boss->Data = new GisSegment(Boss->Data, " ", 0);
1530 
1531  GisToken **Cont = Boss->Cursor;
1532 
1533  if ( Boss->Cursor == &Boss->Data )
1534  Cont = 0;
1535 
1536  Boss->Cursor = &Boss->Data;
1537 
1538  Boss->CloseSubs(Cont);
1539  } else
1540  Boss->CloseSubs();
1541  }
1542 
1543  /* // check wether there are parallel heads
1544  if ( head->Next ) */
1545  // remove comma at end
1546  head->RemoveComma();
1547 }
GisReadArtHead * h
Definition: mutgis.cpp:5
Definition: GIS.h:103
char CommaAtEnd
Definition: GIS_Head.h:327
Definition: GIS.h:116
GisWriteHead * CutOut()
Definition: GIS_Head.cpp:1013
Definition: GIS.h:599
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken * Data
Definition: GIS_Head.h:320
void RemoveComma()
Definition: GIS_Head.cpp:1121
GisWriteHead * Next
Definition: GIS_Head.h:317
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824
int CloseSubs(GisToken **cont=0)
Definition: GIS_Head.cpp:1141

◆ CloseCurrentToken()

int GisWriteHead::CloseCurrentToken ( char  insertRest = 1)

Definiert in Zeile 1175 der Datei GIS_Head.cpp.

Benutzt mutabor::CurrentTime, GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd und GTUnknown.

1176 {
1177  if ( ChordNotes ) {
1178  WriteChord();
1179  return 0;
1180  }
1181 
1182  switch ( State() ) {
1183 
1184  case GTNull:
1185  if ( insertRest && CurrentTime ) // write a rest
1186  {
1187  *Cursor = new GisNote("_", "", 0, CurrentTime, " ");
1188  Cursor = &((*Cursor)->Next);
1189  CurrentTime = 0;
1190  }
1191  break;
1192 
1193  case GTUnknown:
1194  return 1; // impossible
1195 
1196  case GTSequenz:
1197  CloseSubs();
1198 
1199  CurrentTime = 0;
1200 
1201  Cursor = &((*Cursor)->Next);
1202 
1203  break;
1204 
1205  case GTSegment:
1206  CloseSubs();
1207 
1208  CurrentTime = 0;
1209 
1210  Cursor = &((*Cursor)->Next);
1211 
1212  break;
1213 
1214  case GTTag:
1215  return 1; // impossible
1216 
1217  case GTTagBegin:
1218  return 1; // impossible
1219 
1220  case GTTagEnd:
1221  return 1; // impossible
1222 
1223  /* case GTNote:
1224  ((GisNote*)(*Cursor))->Duration = CurrentTime;
1225  Cursor = &(*Cursor)->Next;
1226  CurrentTime = frac(0, 1);
1227  // das hier muß anders sein, um mehrere Noten gleichzeitig zu schaffen
1228  break; */
1229 
1230  case GTParaInt:
1231  return 1; // impossible
1232 
1233  case GTParaReal:
1234  return 1; // impossible
1235 
1236  case GTParaStr:
1237  return 1; // impossible
1238  case GTNote:case GTComma:
1239  ;
1240  }
1241 
1242  return 0;
1243 }
Definition: GIS.h:107
ChordNote * ChordNotes
Definition: GIS_Head.h:325
Definition: GIS.h:103
Definition: GIS.h:104
Definition: GIS.h:100
Definition: GIS.h:106
Definition: GIS.h:111
Definition: GIS.h:101
GisType State()
Definition: GIS_Head.h:371
Definition: GIS.h:108
void WriteChord()
Definition: GIS_Head.cpp:1379
GisToken ** Cursor
Definition: GIS_Head.h:320
Definition: GIS.h:423
mutabor::frac CurrentTime
Definition: GIS_Head.h:321
Definition: GIS.h:102
Definition: GIS.h:110
int CloseSubs(GisToken **cont=0)
Definition: GIS_Head.cpp:1141

◆ CloseFile()

int CloseFile ( )

Definiert in Zeile 75 der Datei GSP_File.cpp.

Benutzt File.

Wird benutzt von GspParse().

76 {
77  delete File;
78  return 0;
79 }
boost::filesystem::ifstream * File
Definition: GSP_File.cpp:40

◆ CloseSubs()

int GisWriteHead::CloseSubs ( GisToken **  cont = 0)

Definiert in Zeile 1141 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::Boss, GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::CutOut(), GisWriteHead::Data, h, GisWriteHead::ReadyForBoss() und GisWriteHead::RemoveComma().

Wird benutzt von CloseAllSubs().

1142 {
1143  GisWriteHead *h = Next;
1144  GisToken **Cont = &(((GisSegment*)*Cursor)->Contents);
1145 
1146  if ( cont ) Cont = cont;
1147 
1148  while ( h && nSub > 0 && h->Boss == this ) {
1149  h->ReadyForBoss();
1150 
1151  if ( nSub == 1 && h->CommaAtEnd )
1152  h->RemoveComma();
1153 
1154  *Cont = h->Data;
1155 
1156  if ( Data )
1157  Cont = h->Cursor;
1158 
1159  if ( nSub > 1 && !h->CommaAtEnd ) {
1160  *Cont = new GisComma(" ", 0);
1161  Cont = &((*Cont)->Next);
1162  }
1163 
1164  nSub--;
1165 
1166  h->CutOut();
1167  delete h;
1168  h = Next;
1169  }
1170 
1171  return nSub;
1172 }
GisReadArtHead * h
Definition: mutgis.cpp:5
int ReadyForBoss()
Definition: GIS_Head.cpp:1073
char CommaAtEnd
Definition: GIS_Head.h:327
Definition: GIS.h:116
GisWriteHead * CutOut()
Definition: GIS_Head.cpp:1013
Definition: GIS.h:599
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken * Data
Definition: GIS_Head.h:320
void RemoveComma()
Definition: GIS_Head.cpp:1121
GisWriteHead * Next
Definition: GIS_Head.h:317
GisWriteHead * Boss
Definition: GIS_Head.h:318

◆ CmpNote()

int CmpNote ( GisToken note1,
GisToken note2 
)

Definiert in Zeile 768 der Datei GIS_Head.cpp.

Benutzt GTNote, NOTE1, NOTE2, StrCmp() und GisToken::Type().

Wird benutzt von ChordNote::SetNoteOff().

769 {
770  if ( note1->Type() != GTNote || note2->Type() != GTNote )
771  return 0;
772 
773  if ( StrCmp(NOTE1->Name, NOTE2->Name)
774  || StrCmp(NOTE1->Accedentials, NOTE2->Accedentials)
775  || NOTE1->Octave != NOTE2->Octave )
776  return 0;
777 
778  return 1;
779 
780 }
Definition: GIS.h:107
int StrCmp(const std::string &s1, const std::string &s2)
Definition: GIS_Head.cpp:748
virtual GisType Type() const
Definition: GIS.h:136
#define NOTE2
Definition: GIS_Head.cpp:745
#define NOTE1
Definition: GIS_Head.cpp:744

◆ Comma()

int Comma ( )

Definiert in Zeile 786 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, GisToken::Sep und TagMode.

Wird benutzt von DoParse(), GisWriteHead::ReadyForBoss() und GisComma::ToString().

787 {
788  DEBUGLOG2(gmnfile,(","));
789 
790  if ( TagMode ) BuildTag();
791 
792  *Current = new GisComma(Sep, 0);
793 
794  Current = &((*Current)->Next);
795 
796  return 0;
797 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
int BuildTag()
Definition: GIS.cpp:530
Definition: GIS.h:599
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ CommonTypedDeviceAPI() [1/2]

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI ( )
inlineprotected

Definiert in Zeile 699 der Datei Device.h.

699  :Device() {
700  AppendToDeviceList(static_cast<thistype *>(this));
701  }
static void AppendToDeviceList(DevicePtr dev)
Definition: Device.cpp:294
Device(const std::string &name="", int id=-1)
Definition: Device.h:658

◆ CommonTypedDeviceAPI() [2/2]

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI ( const std::string name,
int  id = -1 
)
inlineprotected

Definiert in Zeile 703 der Datei Device.h.

704  :Device(name, id) {
705  AppendToDeviceList(static_cast<thistype *>(this));
706  }
static void AppendToDeviceList(DevicePtr dev)
Definition: Device.cpp:294
const char * name
Definition: TabGen.cpp:59
Device(const std::string &name="", int id=-1)
Definition: Device.h:658

◆ Compile()

bool mutabor::BoxClass::Compile ( CompileCallback callback,
const char *  logic 
)

Definiert in Zeile 735 der Datei Box.cpp.

Benutzt _mut, box, mutabor::hidden::expand_decition_tree(), mutabor::hidden::intervall_list_laenge(), mutabor::hidden::logik_list_laenge(), mutabor_box_clear_logic(), mutabor_clear_box_scanner(), mutabor::hidden::mutabor_programm_einlesen(), mutabor::BoxClass::CompileCallback::RefreshDlg(), mutabor::BoxClass::CompileCallback::SetMessage(), mutabor::BoxClass::CompileCallback::SetStatus(), mutabor::hidden::ton_list_laenge(), mutabor::hidden::tonsystem_list_laenge(), mutabor::hidden::umstimmungs_list_laenge() und mutabor::hidden::weiter_gehts_nach_compilerfehler.

735  {
736 
737  set_callback callback_holder(this,callback);
738  if (!setjmp(weiter_gehts_nach_compilerfehler)) {
740  // init_yylex ();
741 
743 
744  if (callback) {
745  callback->SetStatus(logik_list_laenge(box->file->list_of_logiken),
746  ton_list_laenge(box->file->list_of_toene),
747  umstimmungs_list_laenge(box->file->list_of_umstimmungen),
748  tonsystem_list_laenge(box->file->list_of_tonsysteme),
749  intervall_list_laenge(box->file->list_of_intervalle),
750  box->scanner->anzahl_eingelesene_zeichen);
751 
752  // show_line_number(-1);
753 
754  callback->SetStatus(_mut("Generating tables"));
755  callback->RefreshDlg();
756  }
757 
759 
761 
762 
763  if (callback) {
764  callback->SetStatus(_mut("Translation successful"));
765  callback->SetMessage(_mut("No error occured."));
766  callback->RefreshDlg();
767  }
768  return true;
769  } else {
770  //show_line_number(-1);
771  if (callback) {
772  callback->SetStatus(_mut("Translation interrupted."));
773  callback->SetMessage(get_errors());
774  callback->RefreshDlg();
775  }
776 
777  return false;
778  }
779  }
int umstimmungs_list_laenge(const struct umstimmung *list)
Definition: Parser.cpp:94
virtual const std::string get_errors()
Return the collected errors and warnings.
Definition: Box.h:748
int logik_list_laenge(const struct logik *list)
Definition: Parser.cpp:104
#define _mut
Definition: Defs.h:138
mutabor_box_type * box
Definition: Box.h:816
void mutabor_clear_box_scanner(mutabor_box_type *box)
Definition: box.h:180
jmp_buf weiter_gehts_nach_compilerfehler
Definition: gmut.cpp:28
struct mutabor_scanner_data * scanner
Definition: box.h:161
struct mutabor_logic_parsed * file
Definition: box.h:162
int tonsystem_list_laenge(const struct tonsystem *list)
Definition: Parser.cpp:84
bool mutabor_programm_einlesen(mutabor_box_type *box, const char *logic)
Definition: Parser.cpp:607
int intervall_list_laenge(struct intervall *list)
Definition: Interval.c:132
int ton_list_laenge(const struct ton *list)
Definition: Parser.cpp:73
void mutabor_box_clear_logic(mutabor_box_type *box)
Definition: box.h:177
void expand_decition_tree(mutabor_box_type *box)
Definition: TabGen.cpp:1324

◆ compile_callback()

void mutabor::BoxClass::compile_callback ( mutabor_box_type b,
int  line_number 
)
static

Definiert in Zeile 933 der Datei Box.cpp.

Benutzt mutabor::BoxClass::box, mutabor::BoxClass::current_compile_callback und mutabor::BoxClass::CompileCallback::SetLine().

933  {
934  BoxClass * box =
935  reinterpret_cast<BoxClass *>(b -> userdata);
936  if (box->current_compile_callback) {
937  box->current_compile_callback->SetLine(line_number);
938  }
939  }
mutabor_box_type * box
Definition: Box.h:816
BoxClass(int id=-1)
Definition: Box.cpp:857

◆ Controller() [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::Controller ( int  controller,
int  value,
size_t  make_unique 
)
inline

Definiert in Zeile 268 der Datei Route.h.

270  {
271  if (Out)
272  Out->Controller(session_id,
273  controller,
274  value,
275  make_unique);
276  }
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:476
OutputDevice Out
Definition: Route.h:466

◆ Controller() [2/2]

void mutabor::OutputDeviceClass::Controller ( size_t  mutabor_channel,
int  controller,
int  value,
size_t  id 
)
inline

Definiert in Zeile 875 der Datei Device.h.

878  {
879  ScopedLock<OutputDeviceClass> lock(*this);
880  do_Controller(mutabor_channel,
881  controller,
882  value,
883  id);
884  }
virtual void do_Controller(size_t mutabor_channel, int controller, int value, size_t id)=0

◆ Copy()

TagList * Copy ( TagList list)

Definiert in Zeile 439 der Datei GIS_Head.cpp.

Benutzt TagListData::Data, TagListData::Next und TagListData::Tag.

Wird benutzt von MisTrack::Get() und GisReadArtHead::GisReadArtHead().

440 {
441  if ( !list ) return 0;
442 
443  TagList *List = new TagList;
444 
445  List->Next = 0;
446 
447  List->Tag = list->Tag;
448 
449  List->Data = list->Data;
450 
451  return List;
452 }
struct TagListData * Next
Definition: GIS_Head.h:148
GisTag * Tag
Definition: GIS_Head.h:149
struct TagListData TagList
union TagListData::data Data

◆ CopyPara()

GisToken * CopyPara ( GisToken para)

Definiert in Zeile 867 der Datei GIS.cpp.

Benutzt GisToken::Copy() und GisToken::Next.

Wird benutzt von GisTag::Copy(), GisTagBegin::Copy() und GisToken::ToString().

869 {
870  GisToken *C = 0;
871  GisToken **Cursor = &C;
872 
873  while ( para ) {
874  *Cursor = para->Copy();
875  Cursor = &(*Cursor)->Next;
876  para = para->Next;
877  }
878 
879  return C;
880 }
virtual GisToken * Copy()
Definition: GIS.h:141
Definition: GIS.h:116
GisToken * Next
Definition: GIS.h:120

◆ CountOnTime()

void ChordNote::CountOnTime ( mutabor::frac  dTime)

Definiert in Zeile 819 der Datei GIS_Head.cpp.

Benutzt mutabor::CurrentTime.

821 {
822  CurrentTime += dTime;
823  TotalTime += dTime;
824 
825  if ( Next ) Next->CountOnTime(dTime);
826 }
void CountOnTime(mutabor::frac dTime)
Definition: GIS_Head.cpp:819
mutabor::frac TotalTime
Definition: GIS_Head.h:440
ChordNote * Next
Definition: GIS_Head.h:435
mutabor::frac CurrentTime
Definition: GIS_Head.h:439

◆ Create() [1/6]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Create ( InputDevice in,
OutputDevice out,
RouteType  type = RTall,
int  iFrom = -1,
int  iTo = -1,
Box  box = NULL,
bool  active = false,
int  oFrom = -1,
int  oTo = -1,
bool  oNoDrum = true 
)
inlineprotected

Definiert in Zeile 189 der Datei Route-inlines.h.

199  {
200  DEBUGLOG (smartptr, "Route %p (%d)" ,
201  (void*)this,
202  (int)intrusive_ptr_get_refcount(this));
203  DEBUGLOG (smartptr, "input device %p (%d)" ,
204  (void*)in.get(),
205  (int)intrusive_ptr_get_refcount(in.get()));
206  DEBUGLOG (smartptr, "output device %p (%d)" ,
207  (void*)out.get(),
208  (int)intrusive_ptr_get_refcount(out.get()));
209  Route self(this);
210  if (in)
211  connect(self,in);
212  else
213  In.reset();
214  if (out)
215  connect(self,out);
216  else
217  Out.reset();
218  Type = type;
219  IFrom = iFrom;
220  ITo = iTo;
221  this->box = box;
222  Active = active;
223  OFrom = oFrom;
224  OTo = oTo;
225  ONoDrum = oNoDrum;
226  }
InputDevice In
Definition: Route.h:467
RouteType Type
Definition: Route.h:483
#define DEBUGLOG(level,...)
Definition: debug.h:294
mutabor::InputMidiFile * in
mutabor::OutputMidiFile * out
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
OutputDevice Out
Definition: Route.h:466
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:120

◆ Create() [2/6]

static Route mutabor::RouteFactory::Create ( )
inlinestatic

Creates a generic route.

This functions creates a route object on the heap and returns a smart pointer to it. This route will not be preconfigured.

Rückgabe
Route smart pointer to the newly created route

Definiert in Zeile 600 der Datei Route.h.

Benutzt box, in, out und mutabor::RTall.

Wird benutzt von mutaborGUI::MutBoxShape::AddChannel(), compat30::LoadRoutes(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::LoadRoutes(), main(), myDevice::Pause(), CommonMidiOutputTest::setUp(), CommonMidiInputTest::setUp(), OutputMidiFileTest::setUp(), InputMidiFileTest::testAfterTouch(), InputMidiFileTest::testAllControllerOff(), InputMidiFileTest::testBankSelect(), InputMidiFileTest::testBatchPlay1(), InputMidiFileTest::testBoxMidiIn(), InputMidiFileTest::testBug019010(), InputMidiFileTest::testBug019010_2(), GUIRouteTest::testConnect(), InputMidiFileTest::testControllerPlay(), RouteTest::testDestroyAll(), InputMidiFileTest::testRpnNrpn() und InputMidiFileTest::testSysEx().

600  {
601  if (factory)
602  return factory->DoCreate();
603  else
604  BOOST_THROW_EXCEPTION(RouteFactoryNotSet());
605  return NULL;
606  }
virtual RouteClass * DoCreate() const __attribute__((malloc))
Creates a generic route.
Definition: Route.cpp:547
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:748

◆ Create() [3/6]

Route mutabor::RouteFactory::Create ( InputDevice in,
OutputDevice out,
RouteType  type = RTall,
int  iFrom = -1,
int  iTo = -1,
Box  box = NULL,
bool  active = false,
int  oFrom = -1,
int  oTo = -1,
bool  oNoDrum = true 
)
inlinestatic

Creates a preconfigured route according to the given type.

This functions creates a route object on the heap and returns a smart pointer to it. This route will be preconfigured according the data provided in the arguments.

Parameter
inInputDevice& Reference to a smart pointer for the input device where the route starts.
outOutputDevice& End point of the route.
typeRouteType Type of the input filter. See RouteType for more information.
iFromstart of the range for the input filter. Its meaning depends on the input filter type.
iToend of the range for the input filter. Its meaning depends on the input filter type.
boxbox to be used. Values less than 0 indicate a pass through route or a GMN box.
activeindicates whether the events on the route may change the tuning of the box. Regardless of this setting the box referenced by the box parameter will influence the tuning of the events in this route.
oFromStart of the range of the output filter (will be interpreted by the output device.
oToEnd of the reange of the output fileter (will be interpreted by the output device
oNoDrumOn MIDI like devices avoid the channel usually used for percussion.
Rückgabe
Route created by this function (smart pointer).

Definiert in Zeile 247 der Datei Route-inlines.h.

Benutzt DEBUGLOGTYPE, mutabor::RouteFactory::DoCreate(), mutabor::RouteFactory::factory und intrusive_ptr_get_refcount().

256  {
257 
258  DEBUGLOGTYPE(smartptr,RouteFactory,("input device %p (%d)"),
259  (void *)in.get(),
260  (int)intrusive_ptr_get_refcount(in.get()));
261 
262  DEBUGLOGTYPE(smartptr,RouteFactory,("output device %p (%d)"),
263  (void *)out.get(),
264  (int)intrusive_ptr_get_refcount(out.get()));
265 
266  if (factory) {
267  RouteClass * r = factory->DoCreate(in,
268  out,
269  type,
270  iFrom,
271  iTo,
272  box,
273  active,
274  oFrom,
275  oTo,
276  oNoDrum);
277  DEBUGLOGTYPE(smartptr,
278  RouteFactory,
279  ("Shipping %p from factory"),
280  (void *)r);
281 
282  return r;
283  } else {
284 
285  BOOST_THROW_EXCEPTION( RouteFactoryNotSet());
286 
287 // UNREACHABLECT(RouteFactory);
288  return NULL;
289  }
290 
291  }
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:296
mutabor::InputMidiFile * in
virtual RouteClass * DoCreate() const __attribute__((malloc))
Creates a generic route.
Definition: Route.cpp:547
mutabor::OutputMidiFile * out
TRouteClass< InputDevice, OutputDevice, Box > RouteClass
Definition: Route.h:549
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:748
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
mutabor::Box box
RouteFactory()
Creates a route Factory.
Definition: Route.cpp:534

◆ Create() [4/6]

static Box mutabor::BoxFactory::Create ( int  type,
int  id = NewBox 
)
inlinestatic

Definiert in Zeile 905 der Datei Box.h.

Benutzt mutabor::Box0, mutASSERT(), mutabor::NewBox und UNREACHABLECT.

Wird benutzt von mutaborGUI::MutBoxShape::DoLeftDblClick(), mutabor::BoxFactory::LoadBoxes(), main(), myDevice::Pause(), CommonMidiOutputTest::setUp(), CommonMidiInputTest::setUp(), OutputMidiFileTest::setUp(), InputMidiFileTest::testAfterTouch(), InputMidiFileTest::testAllControllerOff(), InputMidiFileTest::testBankSelect(), InputMidiFileTest::testBatchPlay1(), InputMidiFileTest::testBoxMidiIn(), InputMidiFileTest::testBug019010(), InputMidiFileTest::testBug019010_2(), GUIRouteTest::testConnect(), InputMidiFileTest::testControllerPlay(), BoxTest::testCopyPLay(), RouteTest::testDestroyAll(), BoxTest::testGetNextFreeBox(), BoxTest::testParser(), InputMidiFileTest::testRpnNrpn() und InputMidiFileTest::testSysEx().

905  {
906  if (id == NewBox && type != Box0) {
907  id = type;
908  }
909 
910  if (type < 0) type = 0;
911  mutASSERT(type >= 0);
912  if (factories.size() <=(size_t) type) {
913  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
915  return NULL;
916  }
917  if (!factories[type])
918  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
919  return factories[type]->DoCreateBox(id);
920  }
BoxFactory(size_t id=0)
Definition: Box.cpp:997
mutASSERT(p.get_intervals==cmp)
static factorylist factories
Definition: Box.h:962
#define UNREACHABLECT(type)
Definition: debug.h:309

◆ Create() [5/6]

template<class T >
static T mutabor::DeviceFactory::Create ( int  type,
const std::string name = "",
MutaborModeType  mode = DeviceStop,
int  id = -1 
)
static

◆ Create() [6/6]

template<>
InputDevice mutabor::DeviceFactory::Create ( int  type,
const std::string name,
MutaborModeType  mode,
int  id 
)
inline

Definiert in Zeile 1512 der Datei Device.h.

1515  {
1516  return CreateInput(type,name,mode,id);
1517  }
const char * name
Definition: TabGen.cpp:59
static InputDevice CreateInput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1407

◆ CreateInput()

static InputDevice mutabor::DeviceFactory::CreateInput ( int  type,
const std::string name = "",
MutaborModeType  mode = DeviceStop,
int  id = -1 
)
inlinestatic

Definiert in Zeile 1407 der Datei Device.h.

Benutzt mutabor::DeviceStop, mutASSERT(), name, string und UNREACHABLECT.

Wird benutzt von compat30::LoadRoutes(), main(), InputMidiFileTest::setUp(), OutputMidiFileTest::testBatchPlay1(), GUIRouteTest::testConnect() und RouteTest::testDestroyAll().

1410  {
1411  mutASSERT(type >= 0);
1412  if (factories.size() <= (size_t)type) {
1413  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
1415  return NULL;
1416  }
1417  if (!factories[type])
1418  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
1419  return factories[type]->DoCreateInput(name, mode, id);
1420  }
DeviceFactory(size_t id=0)
Definition: Device.cpp:517
const char * name
Definition: TabGen.cpp:59
mutASSERT(p.get_intervals==cmp)
#define UNREACHABLECT(type)
Definition: debug.h:309
static factorylist factories
Definition: Device.h:1477

◆ CreateOutput()

static OutputDevice mutabor::DeviceFactory::CreateOutput ( int  type,
const std::string name = "",
MutaborModeType  mode = DeviceStop,
int  id = -1 
)
inlinestatic

Definiert in Zeile 1389 der Datei Device.h.

Benutzt mutASSERT(), mutUnused, name und UNREACHABLECT.

Wird benutzt von mutabor::DeviceFactory::LoadOutputDevices(), compat30::LoadRoutes(), main(), myDevice::Pause(), OutputMidiFileTest::setUp(), GUIRouteTest::testConnect() und RouteTest::testDestroyAll().

1392  {
1393  mutUnused(mode);
1394  /* \todo implement output device record/pause */
1395  mutASSERT(type >= 0);
1396  if (factories.size() <=(size_t) type) {
1397  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
1399  return NULL;
1400  }
1401  if (!factories[type])
1402  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
1403  return factories[type]->DoCreateOutput(name,id);
1404  }
DeviceFactory(size_t id=0)
Definition: Device.cpp:517
const char * name
Definition: TabGen.cpp:59
#define mutUnused(expr)
Definition: Defs.h:106
mutASSERT(p.get_intervals==cmp)
#define UNREACHABLECT(type)
Definition: debug.h:309
static factorylist factories
Definition: Device.h:1477

◆ CreateSegmentSubs()

void GisReadHead::CreateSegmentSubs ( )

Definiert in Zeile 264 der Datei GIS_Head.cpp.

Benutzt GisSegment::Contents, DEBUGLOG, GTComma und string.

Wird benutzt von GisReadHead::CursorNext().

265 {
266  GisSegment *Seg = (GisSegment*)Cursor;
267  GisToken *Cont = Seg->Contents;
268  std::string id = Id + ("*");
269 #if 0
270  char *id = (char*)malloc(strlen(Id)+2);
271  strcpy(id, Id);
272  strcat(id, "*");
273 #endif
274  nSub = 0;
275 
276  while ( Cont ) // create the single token subs
277  {
278  nSub++;
279  id[Id.length()] = nSub;
280  DEBUGLOG (gmnfile, "Creating Sub for %p (%d, %s)" , (void*)Cont,nSub,id.c_str());
281 
282 // GisReadHead *Sub = // unused variable
283  Build(this, Cont, id, 1);
284  Cont = Cont->Next;
285 
286  while ( Cont ) // read until end or comma
287  {
288 
289  if ( Cont->Type() == GTComma )
290  {
291  Cont = Cont->Next;
292  break;
293  }
294 
295  Cont = Cont->Next;
296  }
297  }
298 }
GisToken * Cursor
Definition: GIS_Head.h:71
#define string
#define DEBUGLOG(level,...)
Definition: debug.h:294
Definition: GIS.h:116
virtual GisReadHead * Build(GisReadHead *boss, GisToken *cursor, const std::string &id, bool singleToken=false)
Definition: GIS_Head.h:98
GisToken * Contents
Definition: GIS.h:225
Definition: GIS.h:111
int nSub
Definition: GIS_Head.h:70
std::string Id
Definition: GIS_Head.h:73

◆ CreateSequenzSubs()

void GisReadHead::CreateSequenzSubs ( )

Definiert in Zeile 301 der Datei GIS_Head.cpp.

Benutzt GisSegment::Contents und string.

Wird benutzt von GisReadHead::CursorNext().

302 {
303  GisSegment *Seq = (GisSegment*)Cursor;
304  std::string id = Id + ("\x01");
305 #if 0
306  char *id = (char*)malloc(strlen(Id)+2);
307  strcpy(id, Id);
308  strcat(id, "\x01");
309 #endif
310  nSub = 1;
311 // GisReadHead *Sub = // unused varible;
312  Build(this, Seq->Contents, id);
313 }
GisToken * Cursor
Definition: GIS_Head.h:71
#define string
virtual GisReadHead * Build(GisReadHead *boss, GisToken *cursor, const std::string &id, bool singleToken=false)
Definition: GIS_Head.h:98
GisToken * Contents
Definition: GIS.h:225
int nSub
Definition: GIS_Head.h:70
std::string Id
Definition: GIS_Head.h:73

◆ current_tone_entry() [1/2]

mutabor::BoxClass::current_tone_entry::current_tone_entry ( )
inline

Definiert in Zeile 500 der Datei Box.h.

500  :box_support::tone_entry(),
501  index(-1),
502  id(0),
503  channel(-7) {}

◆ current_tone_entry() [2/2]

mutabor::BoxClass::current_tone_entry::current_tone_entry ( int  ind,
double  p,
size_t  i,
int  c 
)
inline

Definiert in Zeile 504 der Datei Box.h.

507  :box_support::tone_entry(p),
508  index(ind),
509  id (i),
510  channel(c) {}
string_parser p("\onstant tone system\0")

◆ CutOut() [1/2]

GisReadHead * GisReadHead::CutOut ( )

Definiert in Zeile 215 der Datei GIS_Head.cpp.

Benutzt mutASSERT(), GisReadHead::Next, GisReadHead::Prev und GisReadHead::PrevPtr.

Wird benutzt von GisReadHead::Build(), GisReadArtHeadOn(), GisReadHeadOn(), mutabor::InputGis::ReadOn() und GisWriteHead::~GisWriteHead().

216 {
217 #if 0
218 
219  if ( *(PrevPtr) == this ) // first of list
220  {
221  *PrevPtr = Next;
222  } else // normal list postition
223  {
224  (*PrevPtr)->Next = Next;
225  }
226 
227  if ( Next ) Next->PrevPtr = PrevPtr;
228 
229  Next = NULL;
230 
231  PrevPtr = &Prev;
232 
233  return this;
234 
235 #else
236  if ( *(PrevPtr) == this ) // first of list
237  {
238  *PrevPtr = Next;
239 
240  if (Next) {
241  Next->PrevPtr = PrevPtr;
242  Next->Prev = NULL;
243  }
244  }
245  else // normal list postition
246  {
247  Prev->Next = Next;
248 
249  if (Next) {
250  Next->Prev = Prev;
251  mutASSERT(Next->PrevPtr == &(Next->Prev));
252  }
253  }
254 
255  Next = NULL;
256 
257  PrevPtr = &Prev;
258  Prev = NULL;
259  return this;
260 #endif
261 }
GisReadHead ** PrevPtr
Definition: GIS_Head.h:68
GisReadHead * Next
Definition: GIS_Head.h:68
GisReadHead * Prev
Definition: GIS_Head.h:68
mutASSERT(p.get_intervals==cmp)

◆ CutOut() [2/2]

GisWriteHead * GisWriteHead::CutOut ( )

Definiert in Zeile 1013 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::Next und GisWriteHead::Prev.

Wird benutzt von CloseAllSubs() und GisWriteHead::CloseSubs().

1014 {
1015  if ( *(GisWriteHead**)Prev == this ) // first of list
1016  {
1017  *(GisWriteHead**)Prev = Next;
1018  } else // normal list postition
1019  {
1020  Prev->Next = Next;
1021  }
1022 
1023  if ( Next ) Next->Prev = Prev;
1024 
1025  Next = 0;
1026 
1027  Prev = 0;
1028 
1029  return this;
1030 }
GisWriteHead * Next
Definition: GIS_Head.h:317
GisWriteHead * Prev
Definition: GIS_Head.h:317

◆ debug_print_thread_mutex()

template<class M >
void Mutex< M >::debug_print_thread_mutex ( const char *  s) const
inline

Definiert in Zeile 630 der Datei thread.h.

Benutzt Thread::get_current_string_id(), Mutex< M >::get_string_handle() und isDebugFlag.

630  {
631  if (isDebugFlag(thread)) {
632  debug_print_mutex(s,
634  const_cast<Mutex<M> &>(*this).get_string_handle().c_str());
635  }
636 }
static std::string get_current_string_id()
Definition: thread.h:615
Definition: thread.h:268
std::string get_string_handle()
Definition: thread.h:347
#define isDebugFlag(level)
Definition: debug.h:186

◆ DeleteNote()

void mutabor::BoxClass::DeleteNote ( int  note,
size_t  id,
int  channel 
)
inline

Definiert in Zeile 566 der Datei Box.h.

Benutzt DeleteKey().

566  {
567  scoped_watchdog lock(this);
568  hidden::DeleteKey(box, note, id, channel);
569  }
mutabor_box_type * box
Definition: Box.h:816
void DeleteKey(mutabor_box_type *box, int taste, size_t id, size_t channel)
Definition: Execute.cpp:1007

◆ Destroy() [1/6]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Destroy ( )
inlinevirtual

Remove from Route list to be deleted, when it becomes free.

As we are using smart pointers the Route gets deleted, when no pointers point to it any more. As we want to interactively manage routes, We must allow routes to have no input device attached to it. This function explicitely allows to delete the object when it is not used any more.

Definiert in Zeile 229 der Datei Route-inlines.h.

230  {
231  Route self(this);
232  debug_destroy_class(this);
233  RemoveFromRouteList(this);
234  if (In) disconnect(self,In);
235  if (Out) disconnect(self,Out);
236  if (box) disconnect(self,box);
237  }
InputDevice In
Definition: Route.h:467
static void RemoveFromRouteList(Route route)
Definition: Route.cpp:297
OutputDevice Out
Definition: Route.h:466
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:120
bool disconnect(Route r, OutputDevice out)
Definition: Route-inlines.h:78
void debug_destroy_class(void *ptr, std::string file, int l)
Definition: debug.cpp:119

◆ Destroy() [2/6]

static void mutabor::RouteFactory::Destroy ( )
inlinestatic

Destroy the route factory.

Call this function instead of deleting the factory.

Definiert in Zeile 649 der Datei Route.h.

Wird benutzt von mutabor::ScopedRoute::~ScopedRoute().

649  {
650  if (factory)
651  delete factory;
652  else
653  BOOST_THROW_EXCEPTION( RouteFactoryNotSet());
654 // UNREACHABLECT(RouteFactory);
655  }
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:748

◆ Destroy() [3/6]

virtual void mutabor::BoxClass::Destroy ( )
virtual

Destroy the current object.

This function is called when an object shall be deleted. It clears up all references to itself so that it will be deleted if it is not needed anymore.

This functions detatches the device from all routes and calls DoDestroy() afterwards. Finally the Device is going to removed from the device list.

Erneute Implementation in mutaborGUI::BoxData.

Wird benutzt von mutaborGUI::BoxData::Destroy().

◆ Destroy() [4/6]

template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::Destroy ( )
inlinevirtual

Destroy the current object.

This function is called when an object shall be deleted. It clears up all references to itself so that it will be deleted if it is not needed anymore.

This functions detatches the device from all routes and calls DoDestroy() afterwards. Finally the Device is going to removed from the device list.

Definiert in Zeile 53 der Datei Device-inlines.h.

Wird benutzt von myDevice::Pause() und CommonMidiInputTest::tearDown().

53  {
54  TRACEC;
55  DevicePtr self(static_cast<thistype *>(this));
56  TRACEC;
57  if (IsOpen()) Close();
58 
60 
61  TRACEC;
62  debug_destroy_class(this);
63  RemoveFromDeviceList(static_cast<thistype *>(this));
64  TRACEC;
65  }
bool IsOpen() const
Definition: Device.h:636
#define TRACEC
Definition: debug.h:300
virtual void DisconnectFromAll()
Disconnect the device from all pairings with routes GUI data or something else.
static void RemoveFromDeviceList(DevicePtr dev)
Definition: Device.cpp:307
virtual void Close()=0
void debug_destroy_class(void *ptr, std::string file, int l)
Definition: debug.cpp:119

◆ Destroy() [5/6]

static void mutabor::BoxFactory::Destroy ( )
inlinestatic

Definiert in Zeile 922 der Datei Box.h.

Benutzt UNREACHABLECT.

922  {
923  if (!factories.empty()) {
924  for (factorylist::iterator i = factories.begin();
925  i != factories.end(); i++) {
926  BoxFactory * factory = *i;
927  if (factory)
928  delete factory;
929  }
930  factories.clear();
931  } else
933  }
BoxFactory(size_t id=0)
Definition: Box.cpp:997
static factorylist factories
Definition: Box.h:962
#define UNREACHABLECT(type)
Definition: debug.h:309

◆ Destroy() [6/6]

static void mutabor::DeviceFactory::Destroy ( )
inlinestatic

Definiert in Zeile 1427 der Datei Device.h.

Benutzt UNREACHABLECT.

1427  {
1428  if (!factories.empty()) {
1429  for (factorylist::iterator i = factories.begin();
1430  i != factories.end(); ++i) {
1431  DeviceFactory * factory = *i;
1432  if (factory)
1433  delete factory;
1434  }
1435  factories.clear();
1436  } else
1438  }
DeviceFactory(size_t id=0)
Definition: Device.cpp:517
#define UNREACHABLECT(type)
Definition: debug.h:309
static factorylist factories
Definition: Device.h:1477

◆ Device()

mutabor::Device::Device ( const std::string name = "",
int  id = -1 
)
inlineprotected

Definiert in Zeile 658 der Datei Device.h.

659  :session_id(),
660  routefile_id(id),
661  Name(name),
662  dirty(false),
663  isOpen(false),
665  routes(),
666  userdata(NULL)
667  {}
enum MutaborModeType Mode
Definition: Device.h:655
routeListType routes
Definition: Device.h:656
const char * name
Definition: TabGen.cpp:59
idtype< Device > session_id
Id used during runtime;.
Definition: Device.h:650
void * userdata
Definition: Device.h:679
std::string Name
Definition: Device.h:652
int routefile_id
Definition: Device.h:651

◆ DeviceFactory()

mutabor::DeviceFactory::DeviceFactory ( size_t  id = 0)

Definiert in Zeile 517 der Datei Device.cpp.

Benutzt UNREACHABLEC.

517  {
518  if (factories.size() <= type) {
519  factories.resize(type+1,NULL);
520  }
521  if (factories[type]) {
522  UNREACHABLEC;
523  return;
524  }
525  factories[type] = this;
526 
527  }
#define UNREACHABLEC
Definition: debug.h:310
static factorylist factories
Definition: Device.h:1477

◆ Dirty()

void mutabor::Device::Dirty ( bool  d = true)
inline

Definiert in Zeile 635 der Datei Device.h.

635 { dirty = d; }

◆ DisconnectFromAll() [1/2]

void BoxClass::DisconnectFromAll ( )
inlinevirtual

Disconnect the device from all pairings with routes GUI data or something else.

This function should be extended in subclasses so that after calling it only temporary pointers (variables in functions or temporary objects) point to the object.

Definiert in Zeile 69 der Datei Box-inlines.h.

Benutzt mutabor::disconnect(), route und TRACEC.

69  {
70  Route route (NULL);
71  Box self(this);
72 
73  routeListType::iterator R;
74  while ( (R = routes.begin()) != routes.end() ) {
75  TRACEC;
76  route = (*R);
77  TRACEC;
78  disconnect(route,self);
79  TRACEC;
80  }
81  route.reset();
82 }
mutabor::Route route
#define TRACEC
Definition: debug.h:300
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:548
routeListType routes
Definition: Box.h:819
bool disconnect(Route r, OutputDevice out)
Definition: Route-inlines.h:78

◆ DisconnectFromAll() [2/2]

template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::DisconnectFromAll ( )
inlinevirtual

Disconnect the device from all pairings with routes GUI data or something else.

This function should be extended in subclasses so that after calling it only temporary pointers (variables in functions or temporary objects) point to the object.

Definiert in Zeile 68 der Datei Device-inlines.h.

68  {
69  Route route (NULL);
70  DevicePtr self(static_cast<thistype *>(this));
71 
72  routeListType::iterator R;
73  while ( (R = routes.begin()) != routes.end() ) {
74  TRACEC;
75  route = (*R);
76  TRACEC;
77  disconnect(route,self);
78  TRACEC;
79  }
80  }
mutabor::Route route
routeListType routes
Definition: Device.h:656
#define TRACEC
Definition: debug.h:300
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:548
bool disconnect(Route r, OutputDevice out)
Definition: Route-inlines.h:78

◆ do_AddTime()

virtual void mutabor::OutputDeviceClass::do_AddTime ( frac  time)
protectedpure virtual

◆ do_Close()

virtual void mutabor::OutputDeviceClass::do_Close ( bool  sync = false)
protectedpure virtual

◆ do_Controller()

virtual void mutabor::OutputDeviceClass::do_Controller ( size_t  mutabor_channel,
int  controller,
int  value,
size_t  id 
)
protectedpure virtual

◆ do_GetChannel()

virtual int mutabor::OutputDeviceClass::do_GetChannel ( int  inkey,
size_t  channel,
size_t  id 
)
protectedpure virtual

◆ do_Gis()

virtual void mutabor::OutputDeviceClass::do_Gis ( GisToken token,
char  turn 
)
protectedpure virtual

◆ do_handle_event()

virtual void mutabor::OutputDeviceClass::do_handle_event ( event  e)
protectedpure virtual

◆ do_MidiOut() [1/2]

virtual void mutabor::OutputDeviceClass::do_MidiOut ( mutabor::Box  box,
midi_string  data 
)
protectedpure virtual

Implementiert in mutabor::OutputGis.

◆ do_MidiOut() [2/2]

virtual void mutabor::OutputDeviceClass::do_MidiOut ( uint8_t *  p,
size_t  n 
)
protectedpure virtual

◆ do_NoteOff()

virtual void mutabor::OutputDeviceClass::do_NoteOff ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
bool  is_note_on 
)
protectedpure virtual

◆ do_NoteOn()

virtual void mutabor::OutputDeviceClass::do_NoteOn ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
const ChannelData input_channel_data 
)
protectedpure virtual

Really Send the beginning of a sounding note.

Parameter
boxMutabor box that contains the tuning information
tasteinput key from file or keyboard
velokey press velocity
rroute that has been used to transmit the note
idan additional number that is used to make the note unique
input_channel_datacurrent device settings (Controllers, Sound, etc.)
Siehe auch
OutputDeviceClass::NoteOn, OutputDeviceClass::NoteOff

Implementiert in mutabor::CommonMidiOutput< MidiFileOutputProvider, CommonFileOutputDevice >, mutabor::CommonMidiOutput< mutabor::DebugMidiOutputProvider, mutabor::OutputDeviceClass > und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >.

◆ do_Open()

virtual bool mutabor::OutputDeviceClass::do_Open ( )
inlineprotectedvirtual

◆ do_Panic()

virtual void mutabor::OutputDeviceClass::do_Panic ( int   mutUNUSEDtype)
inlineprotectedvirtual

Definiert in Zeile 1009 der Datei Device.h.

Benutzt STUBC.

1009 { STUBC; };
#define STUBC
Definition: debug.h:306

◆ do_Quiet() [1/2]

virtual void mutabor::OutputDeviceClass::do_Quiet ( Route  r,
int  type 
)
protectedpure virtual

◆ do_Quiet() [2/2]

virtual void mutabor::OutputDeviceClass::do_Quiet ( Route  r,
int  type,
size_t  id 
)
protectedpure virtual

◆ do_UpdateTones()

virtual void mutabor::OutputDeviceClass::do_UpdateTones ( RouteClass route)
protectedpure virtual

◆ DoClose()

void mutabor::BoxClass::DoClose ( )
virtual

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 445 der Datei Box.cpp.

Benutzt mutASSERT().

Wird benutzt von mutaborGUI::BoxData::DoClose().

445  {
446  Reset();
448  if (loopguard) {
449  loopguard -> request_exit();
450  delete loopguard;
451  loopguard = NULL;
452  mutASSERT(loopguard == NULL);
453  }
454  }
virtual void Reset()
Definition: Box.cpp:393
watchdog< Box > * loopguard
Definition: Box.h:844
mutASSERT(p.get_intervals==cmp)

◆ DoCreate() [1/2]

RouteClass * mutabor::RouteFactory::DoCreate ( ) const
protectedvirtual

Creates a generic route.

This functions creates a route object on the heap and returns a smart pointer to it. This route will not be preconfigured.

Each RouteFactory class must override this function to return a route of its type.

Rückgabe
Route smart pointer to the newly created route

Erneute Implementation in mutaborGUI::GUIRouteFactory.

Definiert in Zeile 547 der Datei Route.cpp.

Wird benutzt von mutabor::RouteFactory::Create().

548  {
549  return new RouteClass ();
550  }
TRouteClass< InputDevice, OutputDevice, Box > RouteClass
Definition: Route.h:549

◆ DoCreate() [2/2]

RouteClass * mutabor::RouteFactory::DoCreate ( InputDevice in,
OutputDevice out,
RouteType  type,
int  iFrom,
int  iTo,
Box  box,
bool  active,
int  oFrom,
int  oTo,
bool  oNoDrum 
) const
protectedvirtual

Creates a preconfigured route.

This functions creates a route object on the heap and returns a smart pointer to it. This route will be preconfigured according the data provided in the arguments.

Each RouteFactory class must override this function to return a route of its type.

Parameter
inInputDevice& Reference to a smart pointer for the input device where the route starts.
outOutputDevice& End point of the route.
typeRouteType Type of the input filter. See RouteType for more information.
iFromstart of the range for the input filter. Its meaning depends on the input filter type.
iToend of the range for the input filter. Its meaning depends on the input filter type.
boxbox to be used. Values less than 0 indicate a pass through route or a GMN box.
activeindicates whether the events on the route may change the tuning of the box. Regardless of this setting the box referenced by the box parameter will influence the tuning of the events in this route.
oFromStart of the range of the output filter (will be interpreted by the output device.
oToEnd of the reange of the output fileter (will be interpreted by the output device
oNoDrumOn MIDI like devices avoid the channel usually used for percussion.
Rückgabe
Route created by this function (smart pointer).

Definiert in Zeile 552 der Datei Route.cpp.

562  {
563  return new RouteClass (in,out,type,
564  iFrom,iTo,
565  box,active,
566  oFrom,oTo,
567  oNoDrum);
568  }
mutabor::InputMidiFile * in
mutabor::OutputMidiFile * out
TRouteClass< InputDevice, OutputDevice, Box > RouteClass
Definition: Route.h:549
mutabor::Box box

◆ DoCreateBox()

BoxClass * mutabor::BoxFactory::DoCreateBox ( int  id = -1) const
protectedvirtual

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 1059 der Datei Box.cpp.

Benutzt mutabor::BoxClass::box und mutabor::BoxClass::BoxClass().

1059  {
1060  BoxClass * box = new BoxClass(id);
1061  if (!box) BOOST_THROW_EXCEPTION(BoxNotCreated());
1062  return box;
1063  }
mutabor::Box box

◆ DoCreateInput()

virtual InputDeviceClass* mutabor::DeviceFactory::DoCreateInput ( const std::string name,
MutaborModeType  mode,
int  id = -1 
) const
protectedpure virtual

◆ DoCreateOutput()

virtual OutputDeviceClass* mutabor::DeviceFactory::DoCreateOutput ( const std::string name,
int  id = -1 
) const
protectedpure virtual

◆ DoError()

int DoError ( int  nr,
int  pos = -1 
)

Definiert in Zeile 142 der Datei GSP.cpp.

Benutzt CurrentLine, CurrentPos, GspCurrentLineNr, GspError, GspErrorLine, GspErrorLineNr und GspErrorPos.

Wird benutzt von DoParse(), GetSep(), GspParse() und ReadNote().

143 {
144  if ( GspError ) return GspError;
145  GspError = nr;
147  if ( pos == -1 )
149  else
150  GspErrorPos = pos;
151 
153  return nr;
154 }
int GspErrorPos
Definition: GSP.cpp:30
int GspError
Definition: GSP.cpp:32
std::string GspErrorLine
Definition: GSP.cpp:31
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
int GspCurrentLineNr
Definition: GSP.cpp:28
int GspErrorLineNr
Definition: GSP.cpp:29

◆ dog_watching()

void mutabor::BoxClass::dog_watching ( )
inline

Definiert in Zeile 759 der Datei Box.h.

Benutzt _mut, runtime_error und runtime_warning.

759  {
760  int counter;
761  { // lock the mutex as short as possible.
763  if (logic_timing >= 0) {
764  counter = logic_timing++;
765  } else return;
766  }
767 
768  if (counter > 5) {
769  interrupt_logic(true);
771  _mut("Timeout while executing logic in box %d."),
772  get_routefile_id());
773  } else if (counter == 1) {
775  _mut("The logic in box %d is too slow."),
776  get_routefile_id());
777  }
778  }
int logic_timing
Definition: Box.h:841
Mutex logic_timing_mutex
Definition: Box.h:842
void issue_error(error_type type, const char *format,...)
Format and process a runtime error message or warning.
Definition: Box.h:722
#define _mut
Definition: Defs.h:138
void interrupt_logic(bool allow_resume=true)
Break the execution of any running logic loops.
Definition: Box.h:622
int get_routefile_id() const
Definition: Box.h:297

◆ DoLoadBoxes()

void mutabor::BoxFactory::DoLoadBoxes ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 1065 der Datei Box.cpp.

Benutzt mutUnused und STUBC.

1066  {
1067  mutUnused(config);
1068  STUBC;
1069  }
#define STUBC
Definition: debug.h:306
#define mutUnused(expr)
Definition: Defs.h:106

◆ DoLoadInputDevices()

void mutabor::DeviceFactory::DoLoadInputDevices ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 654 der Datei Device.cpp.

Benutzt mutUnused und STUBC.

655  {
656  mutUnused(config);
657  STUBC;
658  }
#define STUBC
Definition: debug.h:306
#define mutUnused(expr)
Definition: Defs.h:106

◆ DoLoadOutputDevices()

void mutabor::DeviceFactory::DoLoadOutputDevices ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 642 der Datei Device.cpp.

Benutzt mutUnused und STUBC.

643  {
644  mutUnused(config);
645  STUBC;
646  }
#define STUBC
Definition: debug.h:306
#define mutUnused(expr)
Definition: Defs.h:106

◆ DoLoadRoutes()

void mutabor::RouteFactory::DoLoadRoutes ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 570 der Datei Route.cpp.

Benutzt mutabor::tree_storage::GetPath(), mutabor::BoxFactory::LoadBoxes(), mutabor::DeviceFactory::LoadInputDevices(), mutabor::DeviceFactory::LoadOutputDevices(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::LoadRoutes(), mutASSERT(), string, mutabor::tree_storage::toLeaf() und mutabor::tree_storage::toParent().

571  {
572 #ifdef DEBUG
573  std::string oldpath = config.GetPath();
574 #endif
575  config.toLeaf("Routing");
576 
577  BoxFactory::LoadBoxes(config);
580  RouteClass::LoadRoutes(config);
581 
582  config.toParent();
583  mutASSERT(oldpath == config.GetPath());
584  }
#define string
static void LoadBoxes(tree_storage &config)
load the routes from a tree based configuration
Definition: Box.cpp:1013
mutASSERT(p.get_intervals==cmp)
static void LoadInputDevices(tree_storage &config)
load the routes from a tree based configuration
Definition: Device.cpp:585
static void LoadRoutes(tree_storage &config)
Load the current routes from a tree storage.
Definition: Route.cpp:247
static void LoadOutputDevices(tree_storage &config)
load the routes from a tree based configuration
Definition: Device.cpp:531

◆ DoNoteOff()

void mutabor::InputDeviceClass::DoNoteOff ( Route R,
int  key,
int  velocity,
size_t  make_unique 
)
inline

Definiert in Zeile 1300 der Datei Device.h.

Benutzt DEBUGLOG.

1303  {
1304  if (R) {
1305  R->NoteOff(key,velocity,make_unique);
1306  }
1307  current_keys.remove(key, velocity, make_unique, R);
1308  DEBUGLOG(routing,("(key = %d, channel = %lu, id = %lu)"),
1309  key,
1310  (unsigned long)R->get_session_id(),
1311  (unsigned long)make_unique);
1312  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
void remove(int key, int velocity, int unique_id, Route &R)
Definition: Device.h:1092
current_keys_type current_keys
Definition: Device.h:1337
#define key

◆ DoOpen()

bool mutabor::BoxClass::DoOpen ( )
virtual

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 401 der Datei Box.cpp.

Benutzt DEBUGLOG, Thread::get_current_string_id() und mutASSERT().

Wird benutzt von mutaborGUI::BoxData::DoOpen().

401  {
402  Reset();
403 
404 
405  /* creating threads might be expensive. So we
406  create it here, as Play() must be
407  considered to be a realtime function
408  synchronized with other devices */
409  try {
411  loopguard = new watchdog<Box>(this,
412  loop_timeout);
413  if (!loopguard) {
414  Close();
415  return false;
416  }
417  } catch (const boost::thread_resource_error & e) {
418  DEBUGLOG(thread,
419  "Thread %s could not aquire thread resources for loopguard",
421  delete loopguard;
422  loopguard = NULL;
423  Close();
424  return false;
425  } catch (const std::exception & e) {
426  DEBUGLOG(thread,
427  "Thread %s got an exception while creating loopguard: %s",
429  e.what());
430  delete loopguard;
431  loopguard = NULL;
432  Close();
433  return false;
434  } catch (...) {
435  delete loopguard;
436  loopguard = NULL;
437  Close();
438  return false;
439  }
440  loopguard->Run();
441  // hidden::mutabor_reset_action_trace(box);
442  return true;
443  }
virtual void Reset()
Definition: Box.cpp:393
#define DEBUGLOG(level,...)
Definition: debug.h:294
watchdog< Box > * loopguard
Definition: Box.h:844
static std::string get_current_string_id()
Definition: thread.h:615
mutint64 loop_timeout
Definition: Box.h:843
mutASSERT(p.get_intervals==cmp)
void Close()
Definition: Box.h:438
void Run()
Definition: thread.h:587

◆ DoParse()

int DoParse ( )

Definiert in Zeile 526 der Datei GSP.cpp.

Benutzt BeginRange(), BeginSegment(), BeginSequenz(), BracketDeep, Brackets, CHAR0, CharIn(), CheckError(), Comma(), CurrentPos, DEBUGLOGBASE, DelimitChars, DoError(), EndParameter(), EndRange(), EndSegment(), EndSequenz(), Eof, GetSep(), GspError, IsLetter(), Komma, LastTag, NextSequenz(), ParaMode, ReadNote(), ReadParaNumber(), ReadParaStr(), ReadTag(), SavePos() und Tag().

Wird benutzt von GspParse().

527 {
528  ParaMode = 0;
529 
530  while ( !Eof ) {
531  char c = CHAR0;
532  SavePos();
533  Komma = 0;
534 
535  if ( ParaMode ) {
536  if ( isdigit(c) || ( c == '+') || ( c == '-') ) {
537  // number parameter
538  if ( ReadParaNumber() ) return GspError;
539  }
540  else if ( c == ('"') ) {
541  // string parameter
542  if ( ReadParaStr() ) return GspError;
543  }
544  else {
545  // wrong parameter
546  return DoError(10);
547  }
548 
549  // end of parameterlist
550  if ( CHAR0 == '>' ) {
551  CurrentPos++;
552  GetSep();
553  if ( CheckError(EndParameter()) ) return GspError;
554  ParaMode = 0;
555  continue;
556  }
557 
558  // , or > expected
559  if ( !Komma ) {
560  return DoError(11);
561  }
562  }
563  else {
564  // not ParaMode
565  if ( LastTag ) LastTag --;
566  if ( CharIn(c, DelimitChars) ) {
567  int i = 0;
568  while ( DelimitChars[(size_t)i] != c ) i++;
569  if ( i & 1 ) {
570  // closing bracket
571  if ( !BracketDeep )
572  return DoError(1);
573 
574  DEBUGLOGBASE (other,(""),
575  ("brackets: %s, i= %d, last = %d"),
576  Brackets.c_str(),
577  i,
578  Brackets[Brackets.length()-1]);
579 
580  if ( Brackets[Brackets.length()-1] != i-1 )
581  return DoError(2 + (int) Brackets[BracketDeep-1]/2);
582 
583  Brackets = Brackets.substr(0,Brackets.length()-1);
584 
585 #if 0
586  if ( Brackets[--BracketDeep] != i-1 )
587  return DoError(2 + Brackets[BracketDeep]/2);
588 
589 #endif
590  } else // opening bracket
591  Brackets += i;
592 
593 #if 0
594  Brackets[BracketDeep++] = i;
595 
596 #endif
597 #ifdef GMN_STRICT
598  if ( !LastTag && c == '(' )
599  return DoError(41); // error: range without tag
600 
601 #endif
602  CurrentPos++;
603  GetSep();
604  switch ( c ) {
605  case '{': if ( CheckError(BeginSegment()) ) return GspError;
606  break;
607  case '}': if ( CheckError(EndSegment()) ) return GspError;
608  break;
609 
610  case '[': if ( CheckError(BeginSequenz()) ) return GspError;
611  break;
612 
613  case ']': if ( CheckError(EndSequenz()) ) return GspError;
614  break;
615 
616  case '(': if ( CheckError(BeginRange()) ) return GspError;
617  break;
618 
619  case ')': if ( CheckError(EndRange()) ) return GspError;
620  break;
621  }
622 
623  /* if ( Komma )
624  if ( CheckError(NextSequenz()) ) return GspError; */
625  continue;
626  }
627 
628  if ( c == '\\' ) {
629  if ( ReadTag() ) return GspError;
630  /* if ( !ParaMode && Komma )
631  if ( CheckError(NextSequenz()) ) return GspError; */
632  continue;
633  }
634 
635  if ( c == '|' ) {
636  CurrentPos++;
637  GetSep();
638 #ifdef NO_SHORT_BAR
639  if ( CheckError(Tag("bar")) ) return GspError;
640 
641 #else
642  if ( CheckError(Tag("|")) ) return GspError;
643 #endif
644  /* if ( Komma )
645  if ( CheckError(NextSequenz()) ) return GspError; */
646  continue;
647  }
648 
649  if ( c == ',' ) {
650  if ( Brackets[BracketDeep-1] != 0 )
651  return DoError(24); // unexpected comma
652  CurrentPos++;
653  GetSep();
654  if ( CheckError(Comma()) ) return GspError;
655  continue;
656  }
657 
658  if ( IsLetter(c) ) {
659  if ( ReadNote() ) return GspError;
660  if ( Komma )
661  if ( CheckError(NextSequenz()) ) return GspError;
662  continue;
663  }
664 
665  // unallowed char
666  return DoError(20);
667  }
668  }
669  return 0;
670 }
int Eof
Definition: GSP_File.cpp:38
int ReadNote()
Definition: GSP.cpp:418
int IsLetter(char c)
Definition: GSP.cpp:96
#define CHAR0
Definition: GSP.cpp:179
int GspError
Definition: GSP.cpp:32
void SavePos()
Definition: GSP.cpp:169
char Komma
Definition: GSP.cpp:54
int BeginSegment()
Definition: GIS.cpp:555
int BeginRange()
Definition: GIS.cpp:638
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
char ParaMode
Definition: GSP.cpp:53
int CheckError(int nr)
Definition: GSP.cpp:157
std::string Brackets
Definition: GSP.cpp:56
int ReadParaNumber()
Definition: GSP.cpp:313
int EndSegment()
Definition: GIS.cpp:572
size_t CurrentPos
Definition: GSP_File.cpp:37
int BeginSequenz()
Definition: GIS.cpp:585
int Comma()
Definition: GIS.cpp:786
int ReadParaStr()
Definition: GSP.cpp:337
char DelimitChars[]
Definition: GSP.cpp:74
#define BracketDeep
Definition: GSP.cpp:57
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:142
int NextSequenz()
Definition: GIS.cpp:691
int EndParameter()
Definition: GIS.cpp:626
char LastTag
Definition: GSP.cpp:63
int EndRange()
Definition: GIS.cpp:672
int GetSep()
Definition: GSP.cpp:192
int ReadTag()
Definition: GSP.cpp:371
#define DEBUGLOGBASE(level, type,...)
Definition: debug.h:293
int CharIn(char c, const char *s)
Definition: GSP.cpp:89
int EndSequenz()
Definition: GIS.cpp:602

◆ DoResumeKeys()

void mutabor::InputDeviceClass::DoResumeKeys ( )
protected
Noch zu erledigen:
move implementation to midicmn and Co.

Definiert in Zeile 372 der Datei Device.cpp.

Benutzt DEBUGLOG und mutabor::midi::get_holds().

372  {
373  DEBUGLOG (routing, "" );
375  size_t j = 0;
376  for (i = current_keys.begin();i!= current_keys.end();i++) {
377  DEBUGLOG (routing, "(key = %d, channel = %lu, id = %lu)" ,
378  i->key,
379  (unsigned long)i->route->get_session_id(),
380  (unsigned long)i->unique_id);
381  for (const int * k = midi::get_holds();
382  *k >= 0; k++) {
383  i->route->Controller(*k,
385  i->unique_id);
386  }
387  i->route->NoteOn(i->key,
388  i->velocity,
389  i->unique_id,
390  *i->settings,
391  i->userdata);
392  j++;
393  }
394  DEBUGLOG (routing, "revived %lu keys" ,(unsigned long)j);
395  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
int get_controller(size_t number) const
Definition: Device.h:330
current_keys_type current_keys
Definition: Device.h:1337
const int * get_holds()
Return a list of hold controllers.
Definition: MidiKern.h:430
virtual ChannelData & GetChannelData(const current_keys_type::entry &key) const =0

◆ DoSaveBoxes()

void mutabor::BoxFactory::DoSaveBoxes ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 1071 der Datei Box.cpp.

Benutzt mutUnused und STUBC.

1072  {
1073  mutUnused(config);
1074  STUBC;
1075  }
#define STUBC
Definition: debug.h:306
#define mutUnused(expr)
Definition: Defs.h:106

◆ DoSaveInputDevices()

void mutabor::DeviceFactory::DoSaveInputDevices ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 660 der Datei Device.cpp.

Benutzt mutUnused und STUBC.

661  {
662  mutUnused(config);
663  STUBC;
664  }
#define STUBC
Definition: debug.h:306
#define mutUnused(expr)
Definition: Defs.h:106

◆ DoSaveOutputDevices()

void mutabor::DeviceFactory::DoSaveOutputDevices ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 648 der Datei Device.cpp.

Benutzt mutUnused und STUBC.

649  {
650  mutUnused(config);
651  STUBC;
652  }
#define STUBC
Definition: debug.h:306
#define mutUnused(expr)
Definition: Defs.h:106

◆ DoSaveRoutes()

void mutabor::RouteFactory::DoSaveRoutes ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 586 der Datei Route.cpp.

Benutzt mutaborGUI::DebugCheckRoutes(), mutabor::tree_storage::DeleteGroup(), mutabor::tree_storage::GetPath(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::InitializeIds(), mutASSERT(), mutabor::BoxFactory::SaveBoxes(), mutabor::DeviceFactory::SaveInputDevices(), mutabor::DeviceFactory::SaveOutputDevices(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::SaveRoutes(), string, mutabor::tree_storage::toLeaf() und mutabor::tree_storage::toParent().

587  {
588 #ifdef DEBUG
589  std::string oldpath = config.GetPath();
590 #endif
591  config.DeleteGroup(("Routing"));
592 
593  config.toLeaf(("Routing"));
594 
595  // clean configuration
596  // delete unused output devices
598 #ifdef DEBUG
600 #endif
601 
602  BoxFactory::SaveBoxes(config);
605  RouteClass::SaveRoutes(config);
606 
607  config.toParent();
608  mutASSERT(oldpath == config.GetPath());
609  }
#define string
static void SaveInputDevices(tree_storage &config)
write the routes to the configuration
Definition: Device.cpp:618
mutASSERT(p.get_intervals==cmp)
static void SaveBoxes(tree_storage &config)
write the routes to the configuration
Definition: Box.cpp:1035
static void InitializeIds()
Initialize the internal device identifiers.
Definition: Route.cpp:214
static void SaveRoutes(tree_storage &config)
Save the current routes in a tree storage.
Definition: Route.cpp:227
void DebugCheckRoutes()
static void SaveOutputDevices(tree_storage &config)
write the routes to the configuration
Definition: Device.cpp:562

◆ DoSilenceKeys()

void mutabor::InputDeviceClass::DoSilenceKeys ( bool  remove)

Definiert in Zeile 351 der Datei Device.cpp.

Benutzt mutabor::midi::CONTROLLER_OFF, DEBUGLOG und mutabor::midi::get_holds().

351  {
353  size_t j = 0;
354  DEBUGLOG (routing, "" );
355  for (i = current_keys.begin();i!= current_keys.end();i++) {
356  for (const int * k = midi::get_holds();
357  *k >= 0; k++) {
358  i->route->Controller(*k,
360  i->unique_id);
361  }
362  i->route->NoteOff(i->key,i->velocity,i->unique_id);
363  j++;
364  }
365  DEBUGLOG (routing, "silenced %lu keys" ,(unsigned long)j);
366  if (remove) {
368  }
369  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
current_keys_type current_keys
Definition: Device.h:1337
const int * get_holds()
Return a list of hold controllers.
Definition: MidiKern.h:430

◆ end() [1/2]

iterator mutabor::InputDeviceClass::current_keys_type::end ( )
inline

Definiert in Zeile 1122 der Datei Device.h.

Wird benutzt von mutabor::InputDeviceClass::Panic().

1122 { return map.end(); }

◆ end() [2/2]

const_iterator mutabor::InputDeviceClass::current_keys_type::end ( ) const
inline

Definiert in Zeile 1123 der Datei Device.h.

1123 { return map.end(); }

◆ EndParameter()

int EndParameter ( )

Definiert in Zeile 626 der Datei GIS.cpp.

Benutzt AddStr, DEBUGLOG2, GisToken::Sep und TagSep.

Wird benutzt von DoParse(), ReadTag() und GisComma::ToString().

627 {
628  DEBUGLOG2(gmnfile,(">"));
629 
630  if ( Para )
631  AddStr((LastPara->Sep), (">"), Sep);
632  else
633  AddStr(TagSep, (">"), Sep);
634 
635  return 0;
636 }
std::string Sep
Definition: GSP.cpp:39
GisToken * Para
Definition: GIS.cpp:112
#define AddStr(s1, s2, s3)
Definition: GIS.cpp:492
std::string TagSep
Definition: GIS.cpp:111
GisToken * LastPara
Definition: GIS.cpp:112
#define DEBUGLOG2(level,...)
Definition: debug.h:295
std::string Sep
Definition: GIS.h:121

◆ EndRange()

int EndRange ( )

Definiert in Zeile 672 der Datei GIS.cpp.

Benutzt GisTagEnd::Begin, BuildTag(), DEBUGLOG2, GisTagBegin::End, GisToken::Next, GisToken::Sep, Tag() und TagMode.

Wird benutzt von DoParse() und GisComma::ToString().

673 {
674  DEBUGLOG2(gmnfile,(")\n"));
675 
676  if ( TagMode ) BuildTag();
677 
679 
680  *Current = Tag;
681 
682  Current = &(Tag->Next);
683 
685 
686  (Tag->Begin)->End = Tag;
687 
688  return 0;
689 }
char TagMode
Definition: GIS.cpp:109
GisTagBegin * LastOpenRange
Definition: GIS.cpp:108
std::string Sep
Definition: GSP.cpp:39
GisToken * End
Definition: GIS.h:343
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
GisToken * Next
Definition: GIS.h:120
int BuildTag()
Definition: GIS.cpp:530
GisToken ** Current
Definition: GIS.cpp:107
Definition: GIS.h:387
#define DEBUGLOG2(level,...)
Definition: debug.h:295
GisTagBegin * Begin
Definition: GIS.h:391

◆ EndSegment()

int EndSegment ( )

Definiert in Zeile 572 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, GisToken::Next, GisToken::Sep und TagMode.

Wird benutzt von DoParse() und GisComma::ToString().

573 {
574  DEBUGLOG2(gmnfile,("}"));
575 
576  if ( TagMode ) BuildTag();
577  *Current = 0;
578  ((GisSegment*)(LastOpenBracket))->Sep2 = Sep;
581 
582  return 0;
583 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
GisToken * Next
Definition: GIS.h:120
int BuildTag()
Definition: GIS.cpp:530
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ EndSequenz()

int EndSequenz ( )

Definiert in Zeile 602 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, GisToken::Next, GisToken::Sep und TagMode.

Wird benutzt von DoParse() und GisComma::ToString().

603 {
604  DEBUGLOG2(gmnfile,("]"));
605 
606  if ( TagMode ) BuildTag();
607 
608  *Current = 0;
609 
610  ((GisSequenz*)LastOpenBracket)->Sep2 =Sep;
611 
613 
615 
616  return 0;
617 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
GisToken * Next
Definition: GIS.h:120
int BuildTag()
Definition: GIS.cpp:530
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ EndTag()

TagList* EndTag ( TagList **  list,
GisTagEnd tagEnd 
)

Definiert in Zeile 490 der Datei GIS_Head.cpp.

Benutzt GisTagEnd::Begin, GTTag, if(), TagListData::Next, RemoveTag(), TagListData::Tag und GisTag::Type().

Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().

491 {
492  TagList *Pos = *list;
493 
494  if ( Pos && Pos->Tag->Type() == GTTag )
495  Pos = Pos->Next;
496 
497  if ( Pos && tagEnd->Begin == Pos->Tag ) {
498  if ( Pos != *list )
499  RemoveTag(list);
500 
501  RemoveTag(list);
502  }
503 
504  return *list;
505 }
Definition: GIS.h:104
struct TagListData * Next
Definition: GIS_Head.h:148
GisTag * Tag
Definition: GIS_Head.h:149
TagList * RemoveTag(TagList **list)
Definition: GIS_Head.cpp:463
GisTagBegin * Begin
Definition: GIS.h:391
virtual GisType Type() const
Definition: GIS.h:307
if(help==NULL)
Definition: Hilfs.cpp:93

◆ entry()

mutabor::InputDeviceClass::current_keys_type::entry::entry ( int  k,
int  u,
int  v,
Route R,
InputDevice  i,
const ChannelData c,
void *  d 
)
inline

◆ Erase()

void Erase ( TagList list)

Definiert in Zeile 454 der Datei GIS_Head.cpp.

Benutzt TagListData::Next.

Wird benutzt von GisReadArtHead::~GisReadArtHead() und GisWriteHead::~GisWriteHead().

455 {
456  while ( list ) {
457  TagList *TopTag = list;
458  list = TopTag->Next;
459  delete TopTag;
460  }
461 }
struct TagListData * Next
Definition: GIS_Head.h:148

◆ ExecuteCallbacks() [1/2]

void mutabor::BoxClass::ExecuteCallbacks ( unsigned int  flags)
protected

Definiert in Zeile 897 der Datei Box.cpp.

Benutzt mutabor::BoxClass::callbacks.

Wird benutzt von mutabor::BoxClass::log_action().

897  {
898  doexecute_flags doit(flags);
899  std::for_each(callbacks.begin(),callbacks.end(),doit);
900  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:826

◆ ExecuteCallbacks() [2/2]

void mutabor::BoxClass::ExecuteCallbacks ( const char *  action)
protected

Definiert in Zeile 902 der Datei Box.cpp.

Benutzt mutabor::BoxClass::callbacks.

902  {
903  doexecute_action doit(action);
904  std::for_each(callbacks.begin(),callbacks.end(),doit);
905  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:826

◆ FactoryAlreadySet()

mutabor::RouteFactory::FactoryAlreadySet::FactoryAlreadySet ( RouteFactory o,
RouteFactory n 
)
inline

Definiert in Zeile 580 der Datei Route.h.

580  : logic_error(_mutN("Route factory already set")),
581  old(o), created(n) {}
#define _mutN(x)
Definition: Defs.h:137

◆ factorylist() [1/2]

mutabor::BoxFactory::factorylist::factorylist ( )
inline

Definiert in Zeile 950 der Datei Box.h.

950 :base() {}
std::vector< BoxFactory * > base
Definition: Box.h:949

◆ factorylist() [2/2]

mutabor::DeviceFactory::factorylist::factorylist ( )
inline

Definiert in Zeile 1464 der Datei Device.h.

1464 :base() {}
std::vector< DeviceFactory * > base
Definition: Device.h:1463

◆ FactoryNotFound() [1/2]

mutabor::BoxFactory::FactoryNotFound::FactoryNotFound ( int  i)
inline

Definiert in Zeile 889 der Datei Box.h.

889  :std::exception(), id(i) {
890  std::ostringstream writer(message_);
891  writer << "Factory for box type " << i << " has not been registered.";
892  message_ = writer.str();
893  }
parser writer
Define the scala writer class.
Definition: scala.h:339

◆ FactoryNotFound() [2/2]

mutabor::DeviceFactory::FactoryNotFound::FactoryNotFound ( int  i)
inline

Definiert in Zeile 1374 der Datei Device.h.

1374  :std::exception(), id(i) {
1375  std::ostringstream writer(message_);
1376  writer << "Factory for device type " << i << " has not been registered.";
1377  message_ = writer.str();
1378  }
parser writer
Define the scala writer class.
Definition: scala.h:339

◆ FindInBoxList()

static listtype::iterator mutabor::BoxClass::FindInBoxList ( Box  b)
inlinestaticprotected

Definiert in Zeile 862 der Datei Box.h.

862  {
863  typename listtype::iterator i =
864  std::find(boxList.begin(),
865  boxList.end(),
866  b);
867  return i;
868  }
static listtype boxList
Definition: Box.h:811

◆ FindInDeviceList()

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
static listtype::iterator mutabor::CommonTypedDeviceAPI< T, P, L >::FindInDeviceList ( DevicePtr  dev)
inlinestaticprotected

Definiert in Zeile 819 der Datei Device.h.

819  {
820  typename listtype::iterator i =
821  std::find(deviceList.begin(),
822  deviceList.end(),
823  dev);
824  return i;
825  }
static listtype deviceList
Definition: Device.h:697

◆ FindRoute()

Route mutabor::FindRoute ( size_t  id)

◆ free_mutex_callback()

void mutabor::BoxClass::free_mutex_callback ( hidden::mutabor_logic_parsed logic)
static

Definiert in Zeile 965 der Datei Box.cpp.

Benutzt mutASSERT() und mutabor::hidden::mutabor_logic_parsed::mutex.

965  {
966  mutASSERT(logic->mutex);
967  if (logic->mutex) {
968  Mutex<> * m = static_cast<Mutex<> *>(logic->mutex);
969  delete m;
970  }
971  }
Definition: thread.h:268
mutASSERT(p.get_intervals==cmp)

◆ get_bank_coarse()

int mutabor::ChannelData::get_bank_coarse ( ) const
inline

◆ get_bank_fine()

int mutabor::ChannelData::get_bank_fine ( ) const
inline

◆ get_bend() [1/2]

long mutabor::BoxClass::tone::get_bend ( ) const
inline

Return the microtonal part of the in fixed point integer format.

This format has been chosen as some device backends need some space for additional calculations. On the other hand the 24 bit provides much room to avoid rounding errors in the logic.

Rückgabe
Microtonal part in fixed point format with 24 bits after the comma. I.e. 0x1000000 denotes one pitch.

Definiert in Zeile 197 der Datei Box.h.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::pitch_and_bend().

197  {
198  return value & 0xFFFFFF;
199  }

◆ get_bend() [2/2]

int mutabor::ChannelData::get_bend ( )
inline

◆ get_controller()

int mutabor::ChannelData::get_controller ( size_t  number) const
inline

◆ get_distance()

int mutabor::BoxClass::get_distance ( int  note)

Definiert in Zeile 848 der Datei Box.cpp.

Benutzt box und mutabor_get_note_distance().

848  {
849  if (!box) return INT_MIN;
851  }
mutabor_box_type * box
Definition: Box.h:816
int mutabor_get_note_distance(int note, tone_system *system)
Definition: Interpre.h:395
tone_system * tonesystem
tone system.
Definition: box.h:151

◆ get_errors()

virtual const std::string mutabor::BoxClass::get_errors ( )
inlinevirtual

Return the collected errors and warnings.

This function is a prototype for potential error message collection in the GUI part.

Rückgabe
a string containing the collected error messages

Definiert in Zeile 748 der Datei Box.h.

Benutzt string.

748  {
749  static std::string nothing = "";
750  return nothing;
751  }
#define string

◆ get_first_changed_controller() [1/2]

controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller ( ) const
inline

Get the first changed controller.

Rückgabe
Iterator to the first changed controller.
Noch zu erledigen:
Provide changed_controller iterator type

Definiert in Zeile 360 der Datei Device.h.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::CopyProgramChange() und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_UpdateControllers().

360  {
361  controller_vector::const_iterator retval = controller_changed.begin();
362  if (retval == controller_changed.end())
363  return retval;
364  if (*retval != -1)
365  return retval;
366  return get_next_changed_controller(retval);
367  }
controller_vector::const_iterator get_next_changed_controller(controller_vector::const_iterator last) const
Get the first changed controller.
Definition: Device.h:396
controller_vector controller_changed
Definition: Device.h:496

◆ get_first_changed_controller() [2/2]

controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller ( const ChannelData other) const
inline

Get the first changed controller that differs from the corresponding controller in another channel.

Parameter
otherThe channel data we compare ourselves to.
Rückgabe
iterator to the first differently changed controller.

Definiert in Zeile 376 der Datei Device.h.

Benutzt mutabor::ChannelData::controller.

376  {
377  controller_vector::const_iterator retval = controller_changed.begin();
378  if (retval == controller_changed.end())
379  return retval;
380  if (*retval >= 0 && other.controller.size() <= (size_t)*retval)
381  return retval;
382  if (*retval != -1 && controller[*retval] != other.controller[*retval])
383  return retval;
384  return get_next_changed_controller(other,retval);
385  }
controller_vector controller
Definition: Device.h:495
controller_vector::const_iterator get_next_changed_controller(controller_vector::const_iterator last) const
Get the first changed controller.
Definition: Device.h:396
controller_vector controller_changed
Definition: Device.h:496

◆ get_frequency()

BoxClass::tone mutabor::BoxClass::get_frequency ( int  note)

Definiert in Zeile 836 der Datei Box.cpp.

Benutzt box und mutabor_get_note_frequency().

836  {
837  if (!box)
838  return tone();
840  }
mutabor_interval mutabor_get_note_frequency(int note, tone_system *system)
Definition: Interpre.h:407
mutabor_box_type * box
Definition: Box.h:816
tone_system * tonesystem
tone system.
Definition: box.h:151

◆ get_harmony_trigger()

harmony_action* get_harmony_trigger ( struct any_trigger &  trigger)
inline

Definiert in Zeile 96 der Datei Box-inlines.h.

96  {
97  return trigger.u.harmony_trigger;
98 }

◆ get_hold()

bool mutabor::ChannelData::get_hold ( ) const
inline

◆ get_index() [1/2]

int mutabor::ChannelData::get_index ( int  message)
inline

Definiert in Zeile 269 der Datei Device.h.

Benutzt mutabor::midi::DATA_BUTTON_DECREMENT, mutabor::midi::DATA_BUTTON_INCREMENT, mutabor::midi::DATA_ENTRY_COARSE, mutabor::midi::DATA_ENTRY_FINE, mutabor::midi::NON_REGISTERED_PARAMETER_COARSE, mutabor::midi::NON_REGISTERED_PARAMETER_FINE, mutabor::midi::PITCH_BEND_SENSITIVITY, mutabor::midi::REGISTERED_PARAMETER_COARSE und mutabor::midi::REGISTERED_PARAMETER_FINE.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_Controller() und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::OutputParameter().

269  {
270 
271  switch (message) {
273  return -1;
274 #if 0
275  // Don't send the parameter at this
276  // moment. the parameter should be
277  // sent when data is stored in the corresponding
278  // RPN/NRPN parameter
279  // nevertheess we may preprogramm the register
280  // address for later use, so return not -1
287  return 0x20000
290  }
291  return -1;
298  return get_index(0x10000
301  return -1;
302 #endif
307  if (!data_is_rpn
312  return 0x20000
315  } else if (data_is_rpn
320  return 0x10000
323  }
324  return -1;
325  }
326  return message;
327 
328  }
controller_vector controller
Definition: Device.h:495
int get_index(int message)
Definition: Device.h:269

◆ get_index() [2/2]

int mutabor::BoxClass::get_index ( int  note)

Definiert in Zeile 843 der Datei Box.cpp.

Benutzt box und mutabor_get_note_index().

843  {
844  if (!box) return INT_MIN;
845  return mutabor_get_note_index(note, box->tonesystem);
846  }
mutabor_box_type * box
Definition: Box.h:816
int mutabor_get_note_index(int note, tone_system *system)
Definition: Interpre.h:385
tone_system * tonesystem
tone system.
Definition: box.h:151

◆ get_key_trigger()

keyboard_action* get_key_trigger ( struct any_trigger &  trigger)
inline

Definiert in Zeile 93 der Datei Box-inlines.h.

93  {
94  return trigger.u.key_trigger;
95 }

◆ get_midi_trigger()

midi_action* get_midi_trigger ( struct any_trigger &  trigger)
inline

Definiert in Zeile 99 der Datei Box-inlines.h.

Benutzt MUTABOR_NAMESPACE_END.

99  {
100  return trigger.u.midi_trigger;
101 }

◆ get_next_changed_controller() [1/2]

controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller ( controller_vector::const_iterator  last) const
inline

Get the first changed controller.

Parameter
lastlast position of the iterator.
Rückgabe
Iterator to the first changed controller.
Noch zu erledigen:
Provide changed_controller iterator type

Definiert in Zeile 396 der Datei Device.h.

Benutzt mutASSERT().

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::CopyProgramChange() und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_UpdateControllers().

396  {
397  mutASSERT(controller_changed.begin() <= last);
398  mutASSERT(last < controller_changed.end());
399  controller_vector::const_iterator retval = last;
400  do {
401  ++retval;
402  mutASSERT(retval == controller_changed.end()
403  || *retval == -1
404  || (size_t)(*retval) < controller.size());
405  } while (retval != controller_changed.end()
406  && (*retval == -1));
407  return retval;
408  }
controller_vector controller
Definition: Device.h:495
controller_vector controller_changed
Definition: Device.h:496
mutASSERT(p.get_intervals==cmp)

◆ get_next_changed_controller() [2/2]

controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller ( const ChannelData other,
controller_vector::const_iterator  last 
) const
inline

Get the first changed controller that differs from the corresponding controller in another channel.

Parameter
otherThe channel data we compare ourselves to.
lastlast position of the iterator.
Rückgabe
iterator to the first differently changed controller.

Definiert in Zeile 419 der Datei Device.h.

Benutzt mutabor::ChannelData::controller und mutASSERT().

420  {
421  mutASSERT(controller_changed.begin() <= last);
422  mutASSERT(last < controller_changed.end());
423  controller_vector::const_iterator retval = last;
424  do {
425  ++retval;
426  mutASSERT(retval == controller_changed.end()
427  || *retval == -1
428  || (size_t)(*retval) < controller.size());
429  } while (retval != controller_changed.end()
430  && ((*retval == -1)
431  || ( *retval >= 0
432  && (size_t)(*retval) < other.controller.size()
433  && controller[*retval] == other.controller[*retval])));
434  return retval;
435  }
controller_vector controller
Definition: Device.h:495
controller_vector controller_changed
Definition: Device.h:496
mutASSERT(p.get_intervals==cmp)

◆ get_pitch()

long mutabor::BoxClass::tone::get_pitch ( ) const
inline

Definiert in Zeile 200 der Datei Box.h.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::pitch_and_bend().

200  {
201  return value >> 24;
202  }

◆ get_program()

int mutabor::ChannelData::get_program ( ) const
inline

◆ get_quartertone()

static constexpr long mutabor::BoxClass::tone::get_quartertone ( )
inlinestatic

Definiert in Zeile 181 der Datei Box.h.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::pitch_and_bend().

181  {
182  return 0x800000;
183  }

◆ get_routefile_id() [1/3]

int mutabor::BoxClass::get_routefile_id ( ) const
inline

Definiert in Zeile 297 der Datei Box.h.

Wird benutzt von mutaborGUI::MutFrame::CeToggleKey(), mutaborGUI::MutBoxShape::InitializeDialog() und mutaborGUI::MutBoxShape::readDialog().

297  {
298  return routefile_id;
299  }
int routefile_id
Definition: Box.h:818

◆ get_routefile_id() [2/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::get_routefile_id ( ) const
inline

Definiert in Zeile 399 der Datei Route.h.

399  {
400  return routefile_id;
401  }

◆ get_routefile_id() [3/3]

int mutabor::Device::get_routefile_id ( ) const
inline

Definiert in Zeile 613 der Datei Device.h.

Wird benutzt von compat30::SaveRoutes().

613  {
614  return routefile_id;
615  }
int routefile_id
Definition: Device.h:651

◆ get_semitone()

static constexpr long mutabor::BoxClass::tone::get_semitone ( )
inlinestatic

◆ get_session_id() [1/3]

size_t mutabor::BoxClass::get_session_id ( ) const
inline

Definiert in Zeile 256 der Datei Box.h.

256  {
257  return session_id;
258  }
idtype< BoxClass > session_id
Definition: Box.h:817

◆ get_session_id() [2/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
size_t mutabor::TRouteClass< I, O, B >::get_session_id ( ) const
inline

◆ get_session_id() [3/3]

size_t mutabor::Device::get_session_id ( ) const
inline

Definiert in Zeile 609 der Datei Device.h.

609  {
610  return session_id;
611  }
idtype< Device > session_id
Id used during runtime;.
Definition: Device.h:650

◆ get_type()

interval_type_constants mutabor::BoxClass::tone::get_type ( ) const
inline

Definiert in Zeile 173 der Datei Box.h.

Benutzt mutabor_get_tone_type().

Wird benutzt von mutabor::BoxClass::GetCurrentTones().

173  {
174  return (interval_type_constants)
176  }
interval_type_constants
Definition: Box.h:138
enum mutabor_interval_type_constants mutabor_get_tone_type(mutabor_tone tone)
Definition: Interpre.h:106

◆ get_value()

mutint64 mutabor::BoxClass::tone::get_value ( ) const
inline

Definiert in Zeile 203 der Datei Box.h.

203  {
204  return value;
205  }

◆ GetActive()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::GetActive ( ) const
inline

Definiert in Zeile 322 der Datei Route.h.

322  {
323  return Active;
324  }

◆ GetBox() [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
Box mutabor::TRouteClass< I, O, B >::GetBox ( ) const
inline

Definiert in Zeile 330 der Datei Route.h.

Wird benutzt von mutaborGUI::Check() und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_UpdateTones().

330  {
331  return box;
332  }

◆ GetBox() [2/2]

Box mutabor::BoxClass::GetBox ( int  id,
boxidtype  kind 
)
static

Scan the list of Boxes for a given id.

id (int) id to scan for

Rückgabe
(Box) pointer to the input device with the given id if found, NULL else.

Definiert in Zeile 231 der Datei Box.cpp.

Benutzt UNREACHABLECT.

Wird benutzt von mutaborGUI::BoxDlg::AddButtonPressed(), mutaborGUI::MutFrame::CmDoActivate(), mutaborGUI::MutBoxShape::DoLeftDblClick(), mutaborGUI::DontWant(), mutaborGUI::MutFrame::RaiseTheFrame() und mutaborGUI::MutBoxShape::readDialog().

232  {
233  for (typename listtype::iterator i = boxList.begin();
234  i != boxList.end();
235  i++) {
236  int devid;
237  switch (kind) {
238  case IDTypeSession:
239  devid = (*i)->get_session_id();
240  break;
241  case IDTypeFile:
242  devid = (*i)->get_routefile_id();
243  break;
244  default:
246  return *(boxList.end());
247  }
248  if (devid == id) {
249  return (*i);
250  }
251  }
252  return NULL;
253  }
static listtype boxList
Definition: Box.h:811
BoxClass(int id=-1)
Definition: Box.cpp:857
#define UNREACHABLECT(type)
Definition: debug.h:309

◆ GetBoxId()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetBoxId ( )
inline

Definiert in Zeile 317 der Datei Route.h.

317  {
318  return boxid;
319  }

◆ GetBoxList()

static const listtype& mutabor::BoxClass::GetBoxList ( )
inlinestatic

◆ GetChannel() [1/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetChannel ( int  key,
size_t  channel,
size_t  id 
)
inline

Definiert in Zeile 248 der Datei Route.h.

248  {
249  if (channel == session_id())
250  return Out->GetChannel(key, channel, id);
251  return midi::NO_CHANNEL;
252  }
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:476
OutputDevice Out
Definition: Route.h:466
#define key

◆ GetChannel() [2/3]

int mutabor::BoxClass::GetChannel ( int  key,
size_t  channel,
size_t  id 
)

Get the MIDI channel of a given tone.

Parameter
noteNote that has been received
channelInternal unique channel id
idInternal unique Note id
Rückgabe
MIDI channel of the note

Definiert in Zeile 806 der Datei Box.cpp.

Benutzt mutabor::midi::NO_CHANNEL und TRACE.

807  {
808  for (routeListType::const_iterator R = routes.begin();
809  R != routes.end(); R++) {
810  int c = (*R)->GetChannel(key,channel,id);
811 
812  if ( c != midi::NO_CHANNEL ) {
813  TRACE;
814  return c;
815  }
816  }
817  return midi::NO_CHANNEL;
818  }
#define TRACE
Definition: debug.h:299
routeListType routes
Definition: Box.h:819
#define key

◆ GetChannel() [3/3]

int mutabor::OutputDeviceClass::GetChannel ( int  inkey,
size_t  channel,
size_t  id 
)
inline

Definiert in Zeile 886 der Datei Device.h.

886  {
887  ScopedLock<OutputDeviceClass> lock(*this);
888  return do_GetChannel(inkey,channel,id);
889  }
virtual int do_GetChannel(int inkey, size_t channel, size_t id)=0

◆ GetChannelData()

virtual ChannelData& mutabor::InputDeviceClass::GetChannelData ( const current_keys_type::entry key) const
pure virtual

◆ GetCurrentTones()

BoxClass::current_tone_list mutabor::BoxClass::GetCurrentTones ( )

Definiert in Zeile 696 der Datei Box.cpp.

Benutzt box, mutabor::BoxClass::tone::get_type(), mutabor::box_support::tone_entry::invalid, key, mutabor_empty_tone, mutabor_find_key_in_box(), mutabor_get_pitch_from_tone(), mutabor_invalid_tone und t.

697  {
698  ScopedLock<> lock(mutex);
699  current_tone_list retval;
700  if (!box) return retval;
701  struct mutabor_logic_parsed * file = box->file;
702  if (!file) return retval;
703  // no file means no logic (implying no current logic)
704 
705  int count = box->key_count;
706  if (!count) return retval;
707  retval.resize(count);
708 
709  size_t i = 0;
711  key != NULL;
712  key = mutabor_find_key_in_box(box,key->next)) {
713 
714  int index = key->number;
715  tone t = get_frequency(index);
716 
717  switch (t.get_type()) {
718  case mutabor_empty_tone:
719  retval[i].index = index;
720  break;
722  retval[i].flag=box_support::tone_entry::invalid;
723  break;
724  default:
725  retval[i] = current_tone_entry(index,
727  key->id,
728  GetChannel(index, key->channel, key->id));
729  }
730  ++i;
731  }
732  return retval;
733  }
mutabor_box_type * box
Definition: Box.h:816
double mutabor_get_pitch_from_tone(mutabor_tone tone)
Convert an tone from half tone based pitch according to MIDI pitch numbers.
Definition: Interpre.h:284
std::vector< current_tone_entry > current_tone_list
Definition: Box.h:513
mutabor_note_type * mutabor_find_key_in_box(mutabor_box_type *box, size_t index)
Definition: box.h:208
tone get_frequency(int note)
Definition: Box.cpp:836
struct mutabor_logic_parsed * file
Definition: box.h:162
MUTABOR_EXTERN_C_END const char * t
Definition: debug.h:323
Mutex mutex
Definition: Box.h:840
int GetChannel(int key, size_t channel, size_t id)
Get the MIDI channel of a given tone.
Definition: Box.cpp:806
linked list containing key information for incoming keys or notes.
Definition: box.h:73
#define key

◆ GetDevice()

template<class T , class P , class L >
CommonTypedDeviceAPI< T, P, L >::DevicePtr mutabor::CommonTypedDeviceAPI< T, P, L >::GetDevice ( int  id,
devidtype  kind 
)
static

Scan the list of input devices for a given id.

id (int) id to scan for

Rückgabe
(OutputDevice) pointer to the input device with the given id if found, NULL else.

Definiert in Zeile 222 der Datei Device.cpp.

223  {
224  for (typename listtype::iterator i = deviceList.begin();
225  i != deviceList.end();
226  i++) {
227  int devid;
228  switch (kind) {
229  case IDTypeSession:
230  devid = (*i)->get_session_id();
231  break;
232  case IDTypeFile:
233  devid = (*i)->get_routefile_id();
234  break;
235  case IDTypeHardware:
236  default:
238  return *(deviceList.end());
239  }
240  if (devid == id) {
241  return (*i);
242  }
243  }
244  return NULL;
245  }
static listtype deviceList
Definition: Device.h:697
#define UNREACHABLECT(type)
Definition: debug.h:309

◆ GetDeviceId() [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetDeviceId ( )
inline

Definiert in Zeile 310 der Datei Route.h.

310  {
311  return inputid;
312  }

◆ GetDeviceId() [2/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetDeviceId ( )
inline

Definiert in Zeile 314 der Datei Route.h.

314  {
315  return outputid;
316  }

◆ GetDeviceList()

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
static const listtype& mutabor::CommonTypedDeviceAPI< T, P, L >::GetDeviceList ( )
inlinestatic

Definiert in Zeile 755 der Datei Device.h.

755  {
756  return deviceList ;
757  }
static listtype deviceList
Definition: Device.h:697

◆ GetFreeNote()

ChordNote * GisWriteHead::GetFreeNote ( )

Definiert in Zeile 1033 der Datei GIS_Head.cpp.

Benutzt ChordNote::AddGis(), CNNoteOn und ChordNote::Next.

1034 {
1035  if ( !ChordNotes )
1036  return ChordNotes = new ChordNote(this);
1037 
1038  ChordNote **ANote = &ChordNotes;
1039 
1040  while ( *ANote ) {
1041  if ( !((*ANote)->Status & CNNoteOn) ) {
1042  if ( (*ANote)->CurrentTime )
1043  (*ANote)->AddGis(new GisNote("_", "", 0, (*ANote)->CurrentTime, " ", 0));
1044 
1045  return *ANote;
1046  }
1047 
1048  ANote = &(*ANote)->Next;
1049  }
1050 
1051  *ANote = new ChordNote(ChordNotes);
1052 
1053  return *ANote;
1054 }
ChordNote * ChordNotes
Definition: GIS_Head.h:325
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:855
ChordNote * Next
Definition: GIS_Head.h:435
Definition: GIS.h:423
#define CNNoteOn
Definition: GIS_Head.h:425

◆ GetGisType()

GisType GetGisType ( GisToken token)

Definiert in Zeile 824 der Datei GIS.cpp.

Benutzt GTNull und GisToken::Type().

Wird benutzt von CloseAllSubs(), GetMidiInstrument(), GetReal(), GetTheSpeedFactor(), mutabor::MutaborTag(), ChordNote::MutNoteOff(), mutabor::InputGis::Proceed(), GisComma::ToString() und MisFile::WriteGis().

825 {
826  if ( token )
827  return token->Type();
828  else
829  return GTNull;
830 }
virtual GisType Type() const
Definition: GIS.h:136
Definition: GIS.h:100

◆ GetInputDevice()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
const InputDevice& mutabor::TRouteClass< I, O, B >::GetInputDevice ( ) const
inline

Definiert in Zeile 169 der Datei Route.h.

Wird benutzt von mutaborGUI::Check().

169  {
170  return In;
171  }
InputDevice In
Definition: Route.h:467

◆ GetInputFrom()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetInputFrom ( ) const
inline

Definiert in Zeile 350 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Save() und mutabor::InputMidiFile::Save().

350  {
351  return IFrom;
352  }

◆ GetInputTo()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetInputTo ( ) const
inline

Definiert in Zeile 366 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Save() und mutabor::InputMidiFile::Save().

366  {
367  return ITo;
368  }

◆ GetKey()

int GisNote::GetKey ( )

Definiert in Zeile 388 der Datei GIS.cpp.

Benutzt Acc2Int(), GisNote::Accedentials, mutabor::frac::d, GisNote::Duration, LastOctave, mutabor::frac::n, GisNote::Name, Name2Key(), GisToken::Next, GisNote::Octave, out und GisToken::Sep.

390 {
391  int Key = Name2Key(Name);
392 
393  if ( Key == -1 ) return -1;
394 
395  Key += ( Octave + 5) * 12;
396 
397  Key += Acc2Int(Accedentials);
398 
399  return Key;
400 }
std::string Name
Definition: GIS.h:427
int Octave
Definition: GIS.h:429
int Name2Key(const std::string name)
Definition: GIS.cpp:275
int Acc2Int(const std::string &acc)
Definition: GIS.cpp:308
std::string Accedentials
Definition: GIS.h:428

◆ GetLabel()

virtual std::string mutabor::BoxClass::GetLabel ( )
inlinevirtual

Definiert in Zeile 278 der Datei Box.h.

Benutzt _mut, mutabor::Box0, mutabor::GmnBox, mutabor::NewBox und mutabor::NoBox.

278  {
279  switch (GetType()) {
280  case NewBox:
281  return _mut("New box");
282  case NoBox:
283  return _mut("No box");
284  case GmnBox:
285  return _mut("GUIDO box");
286  case Box0:
287  return (boost::format(_mut("Box %d"))
288  % get_routefile_id()).str();
289  }
290  return _mut("Unknown box type");
291  }
#define _mut
Definition: Defs.h:138
virtual BoxType GetType()
Definition: Box.h:260
int get_routefile_id() const
Definition: Box.h:297

◆ GetLogics()

BoxClass::logic_list mutabor::BoxClass::GetLogics ( )

Get a list of currently defined logics.

Zu beachten
: this function replaces GetMutTag() from Runtime.cpp
Rückgabe
List of logic descriptions.

Definiert in Zeile 638 der Datei Box.cpp.

Benutzt mutabor::append_triggers(), box, mutabor::hidden::mutabor_logic_parsed::global_harmonies, mutabor::hidden::mutabor_logic_parsed::global_keystrokes, mutabor::hidden::mutabor_logic_parsed::global_midi_inputs, mutabor::hidden::logik::harmony_list, mutabor::hidden::logik::keystroke_list und mutabor::hidden::logik::midi_input_list.

638  {
639  ScopedLock<> lock(mutex);
640  logic_list retval;
641  if (!box) return retval;
642  struct mutabor_logic_parsed * file = box->file;
643  if (!file) return retval;
644  // no file means no logic (implying no current logic)
645 
646  struct mutabor::hidden::logik * logic = box->current_logic;
647  append_triggers (retval, box, logic, file->global_keystrokes );
648  append_triggers (retval, box, logic, file->global_harmonies );
649  append_triggers (retval, box, logic, file->global_midi_inputs);
650  if (logic) {
651  append_triggers(retval, box, logic, logic->keystroke_list );
652  append_triggers(retval, box, logic, logic->harmony_list );
653  append_triggers(retval, box, logic, logic->midi_input_list);
654  }
655  return retval;
656  }
struct logik * current_logic
Definition: box.h:155
struct harmonie_ereignis * harmony_list
Definition: Global.h:453
mutabor_box_type * box
Definition: Box.h:816
std::list< logic_entry > logic_list
Definition: Box.h:483
struct midi_ereignis * midi_input_list
Definition: Global.h:455
struct mutabor_logic_parsed * file
Definition: box.h:162
Mutex mutex
Definition: Box.h:840
static void append_triggers(BoxClass::logic_list &list, mutabor_box_type *box, struct mutabor::hidden::logik *logic, struct keyboard_ereignis *keystrokes)
Definition: Box.cpp:554
struct keyboard_ereignis * keystroke_list
Definition: Global.h:454

◆ GetMatchingHeader()

GisWriteHead * GetMatchingHeader ( GisWriteHead **  head,
const std::string  id 
)

Definiert in Zeile 1438 der Datei GIS_Head.cpp.

Benutzt h, GisWriteHead::Id, GisWriteHead::InsertAfter(), GisWriteHead::Next und GisWriteHead::Prev.

Wird benutzt von GisWriteHead::GetKey() und GisWriteHeadGis().

1439 {
1440  GisWriteHead *h = *head, *LastHead = 0;
1441  GisWriteHead *Boss = h;
1442  size_t BossIdLength = h->Id.length();
1443  char CmpRes = 0;
1444  // search header
1445 
1446  while ( h ) {
1447 
1448 
1449  if ( (!id.compare(0,h->Id.length(),h->Id)) && (h->Id.length() >= BossIdLength) ) {
1450  Boss = h;
1451  BossIdLength = h->Id.length() + 1;
1452  }
1453  CmpRes = h->Id.compare(id);
1454  if ( CmpRes >= 0 ) break;
1455 
1456 #if 0
1457  if ( !strncmp(h->Id, id, strlen(h->Id)) && (strlen(h->Id) >= BossIdLength) ) {
1458  Boss = h;
1459  BossIdLength = strlen(h->Id) + 1;
1460  }
1461 
1462  CmpRes = strcmp(h->Id, id);
1463 
1464  if ( CmpRes >= 0 ) break;
1465 
1466 #endif
1467  LastHead = h;
1468 
1469  h = h->Next;
1470  }
1471 
1472  if ( CmpRes ) // insert a new header
1473  {
1474  h = new GisWriteHead(Boss, id);
1475 
1476  if ( LastHead ) // not at the first position
1477  h->InsertAfter(LastHead);
1478  else // first position in header list
1479  {
1480  h->Prev = (GisWriteHead*)head;
1481  h->Next = *head;
1482 
1483  if ( *head ) (*head)->Prev = h;
1484 
1485  *head = h;
1486  }
1487  }
1488 
1489  return h;
1490 }
GisReadArtHead * h
Definition: mutgis.cpp:5
GisWriteHead * Next
Definition: GIS_Head.h:317
GisWriteHead * InsertAfter(GisWriteHead *position)
Definition: GIS_Head.cpp:993
std::string Id
Definition: GIS_Head.h:322
GisWriteHead * Prev
Definition: GIS_Head.h:317

◆ GetMidiInstrument()

char GetMidiInstrument ( GisToken token)

Definiert in Zeile 56 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG2, GetGisType(), GTParaStr, string und t.

Wird benutzt von GisReadArtHead::Read().

57 {
58  if ( token && GetGisType(token) == GTParaStr ) {
59  std::string v;
60  int value = 0;
61  std::string t=boost::to_upper_copy(((GisParaStr*)token)->s);
62  DEBUGLOG2(gmnfile,("t= %s"), t.c_str());
63 
64  if (t.substr(0,4) == "MIDI") {
65  try {
66  value = boost::lexical_cast<int>(t.substr(4));
67  } catch(const boost::bad_lexical_cast & ) {
68  }
69  DEBUGLOG2(gmnfile,("v= %s"), v.c_str());
70  return (char) value;
71  }
72 
73 #if 0
74  strncpy(t, ((GisParaStr*)token)->s, 30);
75 
76  strupr(t);
77 
78  if ( !strncmp(t, "MIDI", 4) )
79  return atoi(&t[4]);
80 
81 #endif
82  }
83 
84  return 0;
85 }
#define string
#define DEBUGLOG2(level,...)
Definition: debug.h:295
MUTABOR_EXTERN_C_END const char * t
Definition: debug.h:323
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824
Definition: GIS.h:110

◆ GetMode()

MutaborModeType mutabor::Device::GetMode ( )
inline

Definiert in Zeile 581 der Datei Device.h.

Benutzt runtime_error und string.

Wird benutzt von CommonFileDeviceTest::testTimer().

581  {
582  return Mode;
583  }
enum MutaborModeType Mode
Definition: Device.h:655

◆ GetName()

const std::string& mutabor::Device::GetName ( ) const
inline

Definiert in Zeile 590 der Datei Device.h.

Wird benutzt von mutaborGUI::MutOutputMidiFileDeviceShape::InitializeDialog() und mutaborGUI::MutOutputMidiDeviceShape::readDialog().

590  {
591  return Name;
592  }
std::string Name
Definition: Device.h:652

◆ GetNextFreeBox()

static int mutabor::BoxClass::GetNextFreeBox ( )
inlinestatic

◆ GetNote()

ChordNote * GisWriteHead::GetNote ( int  instrId,
int  taste 
)

Definiert in Zeile 1057 der Datei GIS_Head.cpp.

Benutzt ChordNote::CheckId() und ChordNote::Next.

1058 {
1059  ChordNote *ANote = ChordNotes;
1060 
1061  while ( ANote ) {
1062  if ( ANote->CheckId(instrId, taste) )
1063  break;
1064 
1065  ANote = ANote->Next;
1066  }
1067 
1068  return ANote;
1069 }
ChordNote * ChordNotes
Definition: GIS_Head.h:325
ChordNote * Next
Definition: GIS_Head.h:435
char CheckId(int instrId, int taste)
Definition: GIS_Head.h:501

◆ GetOrCreateBox()

Box mutabor::BoxClass::GetOrCreateBox ( int  id)
inlinestatic

Return the box that is associated with the corrent id.

In case such a box does not exist the box is created

Parameter
idId to be fetched.
Rückgabe
Box that has been found or created

Definiert in Zeile 1002 der Datei Box.h.

Benutzt mutabor::Box0 und mutabor::Panic().

Wird benutzt von mutaborGUI::GUIRouteFactory::DoCreateBoxChannelShape(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::Load(), compat30::LoadRoutes(), mutabor::MutaborTag() und mutaborGUI::MutBoxShape::readDialog().

1002  {
1003  Box b = GetBox(id,IDTypeFile);
1004  if (b) return b;
1005  else if (id > Box0)
1006  return BoxFactory::Create(Box0,id);
1007  else return BoxFactory::Create(id);
1008  }
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
static Box GetBox(int id, boxidtype kind)
Scan the list of Boxes for a given id.
Definition: Box.cpp:231
static Box Create(int type, int id=NewBox)
Definition: Box.h:905

◆ GetOutputDevice()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
const OutputDevice& mutabor::TRouteClass< I, O, B >::GetOutputDevice ( ) const
inline

Definiert in Zeile 165 der Datei Route.h.

Wird benutzt von mutaborGUI::Check().

165  {
166  return Out;
167  }
OutputDevice Out
Definition: Route.h:466

◆ GetOutputFrom()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetOutputFrom ( ) const
inline

◆ GetOutputTo()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetOutputTo ( ) const
inline

◆ GetPara()

GisToken * GisTag::GetPara ( int  nr)

Definiert in Zeile 222 der Datei GIS.cpp.

Benutzt GisToken::Next, out, Para und Sep.

223 {
224  GisToken *P = Para;
225 
226  while ( P ) {
227  if ( nr <= 1 ) break;
228 
229  P = P->Next;
230 
231  nr--;
232  }
233 
234  return P;
235 }
Definition: GIS.h:116
GisToken * Para
Definition: GIS.h:272
GisToken * Next
Definition: GIS.h:120

◆ GetParaType()

GisType GisTag::GetParaType ( int  nr)

Definiert in Zeile 204 der Datei GIS.cpp.

Benutzt GTNull, GisToken::Next, Para und GisToken::Type().

205 {
206  GisToken *P = Para;
207 
208  while ( P ) {
209  if ( nr <= 1 ) break;
210 
211  P = P->Next;
212 
213  nr--;
214  }
215 
216  if ( P )
217  return P->Type();
218  else
219  return GTNull;
220 }
virtual GisType Type() const
Definition: GIS.h:136
Definition: GIS.h:100
Definition: GIS.h:116
GisToken * Para
Definition: GIS.h:272
GisToken * Next
Definition: GIS.h:120

◆ GetReal()

double GetReal ( GisToken token)

Definiert in Zeile 46 der Datei GIS_Head.cpp.

Benutzt GetGisType(), GTParaInt und GTParaReal.

Wird benutzt von GisReadArtHead::Read().

47 {
48  if ( GetGisType(token) == GTParaInt )
49  return (double) ((GisParaInt*)token)->i;
50  else if ( GetGisType(token) == GTParaReal )
51  return ((GisParaReal*)token)->x;
52 
53  return 0;
54 }
Definition: GIS.h:108
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824

◆ GetRouteList()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
static const routeListType& mutabor::TRouteClass< I, O, B >::GetRouteList ( )
inlinestatic

Definiert in Zeile 407 der Datei Route.h.

407  {
408  return routeList;
409  }
static routeListType routeList
Definition: Route.h:475

◆ GetRoutes() [1/4]

const routeListType& mutabor::BoxClass::GetRoutes ( ) const
inline

Definiert in Zeile 346 der Datei Box.h.

Wird benutzt von mutaborGUI::Check().

346  {
347  return routes;
348  }
routeListType routes
Definition: Box.h:819

◆ GetRoutes() [2/4]

routeListType& mutabor::BoxClass::GetRoutes ( )
inline

Definiert in Zeile 350 der Datei Box.h.

350  {
351  return routes;
352  }
routeListType routes
Definition: Box.h:819

◆ GetRoutes() [3/4]

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
const routeListType& mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes ( ) const
inline

Definiert in Zeile 746 der Datei Device.h.

Wird benutzt von mutaborGUI::Check().

746  {
747  return routes;
748  }
routeListType routes
Definition: Device.h:656

◆ GetRoutes() [4/4]

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
routeListType& mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes ( )
inline

Definiert in Zeile 750 der Datei Device.h.

750  {
751  return routes;
752  }
routeListType routes
Definition: Device.h:656

◆ GetSep()

int GetSep ( )

Definiert in Zeile 192 der Datei GSP.cpp.

Benutzt CHAR0, CHAR1, CharIn(), CurrentLine, CurrentPos, DEBUGLOG2, DoError(), Eof, GspCurrentLineNr, GspError, Komma, NEW_LINE, ParaMode, ReadNewLine(), Sep, SepChars, SepPos und TAKESEP.

Wird benutzt von DoParse(), GspParse(), ReadLong(), ReadNote(), ReadParaNumber(), ReadParaStr() und ReadTag().

193 {
194  Sep = "";
195 #if 0
196  SepPos = 0;
197 #endif
198  Komma = 0;
199  int RemDeep = 0;
200  int RemLine = 0;
201 
202  while ( !Eof && !GspError ) {
203  DEBUGLOG2(other,("%d >= %d? Sep.Len=%d"),
204  (int)CurrentPos,(int)CurrentLine.length(),(int)Sep.length());
205  DEBUGLOG2(other,("%s"),CurrentLine.c_str());
206  if (CurrentPos >= CurrentLine.length()) {
207 
208  if ( ReadNewLine() ) {
209  DoError(32);
210  Sep = Sep.substr(0,1);
211  DEBUGLOG2(other,("Returning 1 at with (%d) '%s'"),
212  (int)SepPos, Sep.c_str());
213  return Sep.length();
214  }
215 
216  RemLine = 0;
217  if ( GspCurrentLineNr != 1 )
218  Sep += NEW_LINE;
219  continue;
220  }
221 
222  char c = CHAR0;
223 
224  // comment start
225  if ( c == '(' && CHAR1 == '*' ) {
226  TAKESEP;
227  TAKESEP;
228  RemDeep++;
229  continue;
230  }
231 
232  // during a comment
233  if ( RemDeep ) {
234  if ( c == '*' && CHAR1 == ')' ) {
235  TAKESEP;
236  TAKESEP;
237  RemDeep--;
238  } else
239  TAKESEP;
240  continue;
241  }
242 
243  if ( RemLine ) {
244  TAKESEP;
245  continue;
246  }
247 
248  // line comment
249  if ( c == '%' ) {
250  RemLine = 1;
251  continue;
252  }
253 
254  // separating chars
255  if ( CharIn(c, SepChars) ) {
256  TAKESEP;
257  continue;
258  }
259 
260  // sequenz separator
261  if ( c == ',' && ParaMode ) {
262  TAKESEP;
263  Komma = 1;
264  continue;
265  }
266 
267  break;
268  }
269 
270  DEBUGLOG2(other,("Returning with (%d) '%s'"),(int)Sep.length(),Sep.c_str());
271 
272  Sep += "\0";
273  return SepPos;
274 }
int Eof
Definition: GSP_File.cpp:38
#define TAKESEP
Definition: GSP.cpp:188
char SepChars[]
Definition: GSP.cpp:73
int ReadNewLine()
Definition: GSP_File.cpp:83
#define CHAR0
Definition: GSP.cpp:179
int GspError
Definition: GSP.cpp:32
char Komma
Definition: GSP.cpp:54
std::string Sep
Definition: GSP.cpp:39
#define NEW_LINE
Definition: GSP.cpp:72
char ParaMode
Definition: GSP.cpp:53
#define CHAR1
Definition: GSP.cpp:180
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define DEBUGLOG2(level,...)
Definition: debug.h:295
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:142
int GspCurrentLineNr
Definition: GSP.cpp:28
#define SepPos
Definition: GSP.cpp:46
int CharIn(char c, const char *s)
Definition: GSP.cpp:89

◆ GetTagId()

int GetTagId ( const std::string name,
std::string registered 
)

Definiert in Zeile 832 der Datei GIS.cpp.

Benutzt DEBUGLOG2, NTAGS, NTAGSHORTS, Tags und TagShorts.

Wird benutzt von GisTag::GisTag().

834 {
835  if (name.empty()) {
836  registered = Tags[0];
837  return 0;
838  }
839 
840  // check normal form
841  int i;
842 
843  for (i = 0; i < NTAGS; i++) {
844  DEBUGLOG2(gmnfile,("comparing '%s' with tag'%s'"),name.c_str(),Tags[i]);
845  if ( name == Tags[i]) {
846  registered = Tags[i];
847  return i;
848  } ;
849  }
850 
851  // check short form
852  for (i = 0; i < NTAGSHORTS; i++) {
853  DEBUGLOG2(gmnfile,("comparing '%s' with tag'%s'"),name.c_str(),TagShorts[i]);
854 
855  if ( name == TagShorts[i] ) {
856  registered = TagShorts[i];
857  return i;
858  }
859  }
860 
861  // no registered tag
862  registered = "";
863 
864  return -1;
865 }
const char * TagShorts[NTAGSHORTS]
Definition: GIS.cpp:96
const char * Tags[NTAGS]
Definition: GIS.cpp:40
const char * name
Definition: TabGen.cpp:59
#define NTAGS
Definition: GIS.h:67
#define DEBUGLOG2(level,...)
Definition: debug.h:295
#define NTAGSHORTS
Definition: GIS.h:68

◆ GetTheSpeedFactor()

mutint64 GetTheSpeedFactor ( GisToken token)

This function returns the speed factor that must be multiplied to the duration value in order to get a delta timestamp in μs.

Parameter
tokenToken to be parsed in the form numerator/denominator = bpm.
Rückgabe
fraction in μs for 1/1 duration.

Definiert in Zeile 97 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG2, GetGisType(), GTParaStr, mutint64, string, t und ZIFFER.

Wird benutzt von GisReadArtHead::Read().

98 {
99  DEBUGLOG2(gmnfile,("%p"),(void*)token);
100 
101  mutint64 retval = 2l * 1000l * 1000l; // 1/4 = 120bpm => 1/1 = 2s
102 
103  if ( token && GetGisType(token) == GTParaStr ) {
104  const std::string &t = ((GisParaStr*) token) -> s;
105 
106  DEBUGLOG2(gmnfile,("%s"),t.c_str());
107 
108  size_t i = 0;
109 
110  mutint64 numerator = 0, denominator = 0, bpm=0;
111 
112  // trim value
113  while ( !ZIFFER && t[i] )
114  i++;
115 
116  while ( ZIFFER )
117  numerator = numerator*10 + (t[i++]-('0'));
118 
119  while ( !ZIFFER && t[i] )
120  i++;
121 
122  while ( ZIFFER )
123  denominator = denominator*10 + (t[i++]-('0'));
124 
125  while ( !ZIFFER && t[i] )
126  i++;
127 
128  while ( ZIFFER )
129  bpm = bpm*10 + (t[i++]-('0'));
130 
131  DEBUGLOG2(gmnfile,("%ld / %ld / %ld"),denominator, numerator, bpm);
132 
133 
134  if ( numerator && denominator && bpm > 0 ) {
135  retval = (denominator * 60*1000*1000) / (numerator * bpm); // 1/1 = 1bpm => 60s per measure
136  }
137  }
138  DEBUGLOG2(gmnfile,("Returning factor %d"), retval);
139 
140  return retval;
141 }
#define string
#define ZIFFER
Definition: GIS_Head.cpp:87
#define DEBUGLOG2(level,...)
Definition: debug.h:295
MUTABOR_EXTERN_C_END const char * t
Definition: debug.h:323
#define mutint64
Definition: Defs.h:105
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824
Definition: GIS.h:110

◆ GetToneSystem()

box_support::tone_system mutabor::BoxClass::GetToneSystem ( )

Definiert in Zeile 658 der Datei Box.cpp.

Benutzt mutabor::box_support::tone_system::anchor, box, mutabor::box_support::tone_entry::invalid, mutabor_active_tone, mutabor_empty_tone, mutabor_get_pitch_from_interval(), mutabor_get_pitch_from_tone(), mutabor_get_tone_type(), mutabor_invalid_tone, MUTABOR_KEYRANGE_MAX_WIDTH, mutASSERT(), mutabor::box_support::tone_system::period, t und mutabor::box_support::tone_system::tones.

658  {
659  ScopedLock<> lock(mutex);
661  retval.anchor = 60;
662  retval.period = 1;
663  if (!box) return retval;
664  struct mutabor_logic_parsed * file = box->file;
665  if (!file) return retval;
666  // no file means no logic (implying no current logic)
667 
668  hidden::tone_system * system = box->tonesystem;
669  if (!system)
670  return retval;
671  retval.anchor = system->anker;
672  retval.period =
673  mutabor_get_pitch_from_interval(system->periode);
674  int width = system -> breite;
675  if (width <= 0)
676  return retval;
677  retval.tones.resize(width);
679  for (int i = 0 ; i < width; i++) {
680  mutabor_tone t = system->ton[i];
681  switch (mutabor_get_tone_type(t)) {
682  case mutabor_empty_tone:
683  break;
685  retval.tones[i].flag = box_support::tone_entry::invalid;
686  break;
687  case mutabor_active_tone:
688  default:
689  retval.tones[i] =
690  box_support::tone_entry(mutabor_get_pitch_from_tone(t));
691  }
692  }
693  return retval;
694  }
mutabor_box_type * box
Definition: Box.h:816
#define MUTABOR_KEYRANGE_MAX_WIDTH
Definition: Global.h:78
int anker
Definition: Interpre.h:87
enum mutabor_interval_type_constants mutabor_get_tone_type(mutabor_tone tone)
Definition: Interpre.h:106
mutASSERT(p.get_intervals==cmp)
struct TSYS tone_system
double mutabor_get_pitch_from_tone(mutabor_tone tone)
Convert an tone from half tone based pitch according to MIDI pitch numbers.
Definition: Interpre.h:284
double mutabor_get_pitch_from_interval(mutabor_interval interval)
Convert an interval from half tone based pitch according to MIDI pitch numbers.
Definition: Interpre.h:201
struct mutabor_logic_parsed * file
Definition: box.h:162
MUTABOR_EXTERN_C_END const char * t
Definition: debug.h:323
Mutex mutex
Definition: Box.h:840
tone_system * tonesystem
tone system.
Definition: box.h:151

◆ GetType() [1/6]

virtual BoxType mutabor::BoxClass::GetType ( )
inlinevirtual

Definiert in Zeile 260 der Datei Box.h.

Benutzt mutabor::Box0.

260  {
261  return routefile_id >= Box0 ? Box0 : (BoxType) routefile_id;
262  }
BoxType
Definition: Box.h:120
int routefile_id
Definition: Box.h:818

◆ GetType() [2/6]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
RouteType mutabor::TRouteClass< I, O, B >::GetType ( ) const
inline

Definiert in Zeile 338 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load(), mutabor::InputMidiFile::Load(), mutabor::InputMidiPort::Save() und mutabor::InputMidiFile::Save().

338  {
339  return Type;
340  }
RouteType Type
Definition: Route.h:483

◆ GetType() [3/6]

virtual DevType mutabor::OutputDeviceClass::GetType ( ) const
inlinevirtual

Erneute Implementation in mutabor::OutputMidiFile, mutabor::OutputMidiPort und mutabor::OutputGis.

Definiert in Zeile 948 der Datei Device.h.

Benutzt mutabor::DTUnknown.

Wird benutzt von mutabor::CommonFileInputDevice::CommonFileInputDevice().

948  {
949  return DTUnknown;
950  }

◆ GetType() [4/6]

virtual size_t mutabor::BoxFactory::GetType ( ) const
inlineprotectedvirtual

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 964 der Datei Box.h.

Benutzt mutabor::Box0.

964 { return Box0; };

◆ GetType() [5/6]

virtual DevType mutabor::InputDeviceClass::GetType ( ) const
inlinevirtual

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort und mutabor::InputGis.

Definiert in Zeile 1245 der Datei Device.h.

Benutzt mutabor::DTUnknown.

1246  {
1247  return DTUnknown;
1248  }

◆ GetType() [6/6]

virtual size_t mutabor::DeviceFactory::GetType ( ) const
protectedpure virtual

◆ GetTypeName() [1/5]

virtual std::string mutabor::BoxClass::GetTypeName ( )
inlinevirtual

Definiert in Zeile 264 der Datei Box.h.

Benutzt _mut, mutabor::Box0, mutabor::GmnBox, mutabor::NewBox und mutabor::NoBox.

264  {
265  switch (GetType()) {
266  case NewBox:
267  return _mut("New box");
268  case NoBox:
269  return _mut("No box");
270  case GmnBox:
271  return _mut("GUIDO Music Notation box");
272  case Box0:
273  return _mut("Mutabor box");
274  }
275  return _mut("Unknown box type");
276  }
#define _mut
Definition: Defs.h:138
virtual BoxType GetType()
Definition: Box.h:260

◆ GetTypeName() [2/5]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
const std::string& mutabor::TRouteClass< I, O, B >::GetTypeName ( )
inline

Definiert in Zeile 346 der Datei Route.h.

346  {
347  return RTName[Type];
348  }
RouteType Type
Definition: Route.h:483
const std::string RTName[]
Definition: Route.cpp:49

◆ GetTypeName() [3/5]

virtual std::string mutabor::Device::GetTypeName ( ) const
inlinevirtual

◆ GetTypeName() [4/5]

virtual std::string mutabor::OutputDeviceClass::GetTypeName ( ) const
inlinevirtual

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::OutputMidiFile, mutabor::OutputMidiPort, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 952 der Datei Device.h.

Benutzt _mutN und string.

952  {
953  return _mutN("Undefined output device");
954  }
#define _mutN(x)
Definition: Defs.h:137

◆ GetTypeName() [5/5]

virtual std::string mutabor::InputDeviceClass::GetTypeName ( ) const
inlinevirtual

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis und mutabor::CommonFileInputDevice.

Definiert in Zeile 1250 der Datei Device.h.

Benutzt _mutN.

1250  {
1251  return _mutN("Undefined input device");
1252  }
#define _mutN(x)
Definition: Defs.h:137

◆ getUserData() [1/2]

template<class I , class O , class B >
void * mutabor::TRouteClass< I, O, B >::getUserData ( ) const
protectedvirtual

Definiert in Zeile 134 der Datei Route.cpp.

135  {
136  return userdata;
137  }

◆ getUserData() [2/2]

virtual void* mutabor::Device::getUserData ( ) const
inlineprotectedvirtual

◆ Gis()

void mutabor::OutputDeviceClass::Gis ( GisToken token,
char  turn 
)
inline

Definiert in Zeile 890 der Datei Device.h.

Wird benutzt von mutabor::InputGis::Proceed().

890  {
891  ScopedLock<OutputDeviceClass> lock(*this);
892  do_Gis(token,turn);
893  }
virtual void do_Gis(GisToken *token, char turn)=0

◆ GisNote()

GisNote::GisNote ( int  key,
int  octave,
int  acc,
const std::string sep = "",
GisToken next = 0 
)

Definiert in Zeile 343 der Datei GIS.cpp.

Benutzt GisNote::Accedentials, GisNote::Duration, GMN_NO_KEY, GisNote::Name, octave, GisNote::Octave und strdupchr.

348  : GisToken(sep, next)
349 {
350  if ( key == GMN_NO_KEY ) {
351  Name = "_";
352  Accedentials = "";
353  ;
354  Octave = 0;
355  } else {
356  char Flats[] = "cddeefggaabb";
357  char FlatsA[] = " & & & & & ";
358  char Sharps[] = "ccddeffggaab";
359  char SharpsA[] = " # # # # # ";
360  char accs;
361  int Index = key % 12;
362  int Abstand = key /12;
363 
364  if ( Index < 0 ) {
365  Index += 12;
366  Abstand--;
367  }
368 
369  if ( acc < 0 ) {
370  Name = Flats[Index];
371  accs = FlatsA[Index];
372  } else {
373  Name = strdupchr(Sharps[Index]);
374  accs = SharpsA[Index];
375  }
376 
377  if ( accs != ' ' )
378  Accedentials = strdupchr(accs);
379  else
380  Accedentials = "";
381 
382  Octave = Abstand - 5 - octave;
383  }
384 
385  Duration = 0;
386 }
#define GMN_NO_KEY
Definition: GIS.h:89
#define strdupchr(a)
Definition: GIS.cpp:331
std::string Name
Definition: GIS.h:427
static int octave
Definition: GSP.cpp:66
GisToken(const std::string &sep="", GisToken *next=0)
Definition: GIS.h:123
int Octave
Definition: GIS.h:429
mutabor::frac Duration
Definition: GIS.h:430
#define key
std::string Accedentials
Definition: GIS.h:428

◆ GisParse()

GisToken * GisParse ( const std::string  FileName)

Definiert in Zeile 882 der Datei GIS.cpp.

Benutzt DEBUGLOG2, GspParse(), Root, TagMode, TagName, TagSep und UnRavel().

Wird benutzt von GetInFile(), main(), mutabor::InputGis::Open() und GisComma::ToString().

883 {
884  Root = 0;
885  Current = &Root;
886  LastOpenBracket = 0;
887  LastOpenRange = 0;
888  TagMode = 0;
889  TagName = "";
890  TagSep = "";
891  Para = 0;
892  LastPara = 0;
893  DEBUGLOG2(gmnfile,("TagName.len %d, '%s'"),(int)TagName.length(),TagName.c_str());
894 
895  if ( GspParse(FileName) ) {
896  UnRavel();
897  delete Root;
898  Root = 0;
899  }
900 
901  return Root;
902 }
char TagMode
Definition: GIS.cpp:109
GisTagBegin * LastOpenRange
Definition: GIS.cpp:108
GisToken * Para
Definition: GIS.cpp:112
void UnRavel()
Definition: GIS.cpp:803
std::string TagSep
Definition: GIS.cpp:111
std::string TagName
Definition: GIS.cpp:110
GisToken * LastOpenBracket
Definition: GIS.cpp:107
int GspParse(const std::string &FileName)
Definition: GSP.cpp:675
GisToken * LastPara
Definition: GIS.cpp:112
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295
GisToken * Root
Definition: GIS.cpp:106

◆ GISPrettyPrint()

std::string GISPrettyPrint ( std::string  s)

Definiert in Zeile 904 der Datei GIS.cpp.

Benutzt string.

Wird benutzt von GisComma::ToString().

905 {
906  std::string ret = "";
907  std::string pre = "";
908 
909  for (size_t start = 0, current = 0 ; current < s.length(); current++) {
910  char c = s[current];
911 
912  if (c == ('{')) {
913  pre += (" ");
914  } else if (c == ('}')) {
915  if (pre.length() >= 2) pre = pre.substr(0,pre.length()-2);
916  } else if (c == ('\n')) {
917  ret += s.substr (start, current - start + 1) + pre;
918  start = current + 1;
919  }
920  }
921 
922  return ret;
923 }
#define string

◆ GisReadArtDummy()

void GisReadArtDummy ( GisReadArtHead ,
char   
)

Definiert in Zeile 641 der Datei GIS_Head.cpp.

642 {
643  // just a dummy
644 }

◆ GisReadArtHeadOn()

mutabor::frac GisReadArtHeadOn ( GisReadArtHead **  Head,
frac  dTime,
GisReadArtProceed proceed 
)

Definiert in Zeile 647 der Datei GIS_Head.cpp.

Benutzt GisReadHead::Boss, GisReadHead::Cursor, GisReadHead::CursorNext(), GisReadHead::CutOut(), DEBUGLOG2, h, GisReadHead::Next, GisReadHead::nSub, GisReadArtHead::Read(), mutabor::str(), GisReadHead::Time, GisReadArtHead::Time2, TRACE und GisReadHead::Turn.

Wird benutzt von main().

648 {
649  TRACE;
650  frac MinTime = frac(-1, 1);
651 
652 beginloop:
653 
654  while ( *Head ) {
655  GisReadArtHead *h = *Head;
656 
657  if ( h->nSub > 0 ) // header has subs
658  {
659  Head = (GisReadArtHead**)&(h->Next);
660  continue;
661  }
662  if ( h->nSub == 0 ) // all subs has finished
663  {
664  proceed(h, h->Turn++); // end of segment or sequenz
665  h->CursorNext();
666  h->Time = 0;
667  }
668  if ( h->Time != frac(0, 1) ) // header in normal state
669  {
670  h->Time -= dTime;
671 
672  if ( h->Time <= frac(0, 1) )
673  {
674  proceed(h, h->Turn++);
675  DEBUGLOG2(gmnfile, ("Turn:2; Moving time2 to time (old: %s, new: %s)"),str(h->Time).c_str(), str(h->Time2).c_str());
676 
677  if ( h->Turn == 2 ) {
678  h->Time = h->Time2;
679  h->Time2 = 0;
680  }
681 
682  if ( h->Turn > 2 )
683  h->CursorNext();
684  }
685  }
686 
687  h->nSub = -1; // normal header
688  // now check, wether count down Time is 0
689  // if h->time = 0 then h->Cursor points to the GisToken next to proceed
690 
691  while ( !(h->Time) ) // read next tokens
692  {
693 
694  if ( h->Turn)
695  {
696  proceed(h, h->Turn++);
697 
698  if ( h->Turn == 2 ) {
699  DEBUGLOG2(gmnfile, ("Turn:2; Moving time2 to time (old: %s, new: %s)"),str(h->Time).c_str(), str(h->Time2).c_str());
700  h->Time = h->Time2;
701  h->Time2 = 0;
702  }
703 
704  if ( h->Turn > 2 )
705  h->CursorNext();
706  else
707  continue;
708  }
709 
710  if ( !h->Cursor ) // header finished, kick away
711  {
712  h->CutOut();
713 
714  if ( h->Boss ) h->Boss->nSub--; // inform the boss
715 
716  delete h;
717 
718  goto beginloop;
719  }
720  // proceed
721  proceed(h, 0);
722 
723  h->Read();
724 
725  if ( h->nSub != -1 ) goto beginloop;
726 
727  if ( !(h->Time) ) // token without duration
728  h->CursorNext();
729  }
730  // check MinTime
731  if ( MinTime == frac(-1,1) || h->Time < MinTime )
732  MinTime = h->Time;
733 
734  // next Header
735  Head = (GisReadArtHead**)&(h->Next);
736  }
737 
738  return MinTime;
739 }
GisToken * Cursor
Definition: GIS_Head.h:71
GisReadArtHead * h
Definition: mutgis.cpp:5
GisReadHead * Boss
Definition: GIS_Head.h:69
GisToken * CursorNext()
Definition: GIS_Head.h:106
std::string str(T obj)
Definition: Defs.h:131
GisReadHead * Next
Definition: GIS_Head.h:68
mutabor::frac Time2
Definition: GIS_Head.h:166
GisReadHead * CutOut()
Definition: GIS_Head.cpp:215
mutabor::frac Time
Definition: GIS_Head.h:72
char Turn
Definition: GIS_Head.h:74
int nSub
Definition: GIS_Head.h:70
#define TRACE
Definition: debug.h:299
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ GisReadHeadOn()

mutabor::frac GisReadHeadOn ( GisReadHead **  Head,
frac  dTime,
GisReadProceed proceed 
)

Definiert in Zeile 365 der Datei GIS_Head.cpp.

Benutzt GisReadHead::Boss, GisReadHead::Cursor, GisReadHead::CursorNext(), GisReadHead::CutOut(), h, GisReadHead::Next, GisReadHead::nSub, GisReadHead::Read() und GisReadHead::Time.

366 {
367  frac MinTime = frac(-1, 1);
368 
369 beginloop:
370 
371  while ( *Head ) {
372  GisReadHead *h = *Head;
373 
374  if ( h->nSub > 0 ) // header has subs
375  {
376  Head = &(h->Next);
377  continue;
378  }
379  if ( h->nSub == 0 ) // all subs has finished
380  {
381  proceed(h, 1);
382  h->CursorNext();
383  h->Time = 0;
384  }
385  if ( h->Time != frac(0, 1) ) // header in normal state
386  {
387  h->Time -= dTime;
388 
389  if ( h->Time <= frac(0, 1) )
390  {
391  proceed(h, 1);
392  h->CursorNext();
393  }
394  }
395 
396  h->nSub = -1; // normal header
397  // now check, wether count down Time is 0
398  // if h->time = 0 then h->Cursor points to the GisToken next to proceed
399 
400  while ( !(h->Time) ) // read next tokens
401  {
402 
403  if ( !h->Cursor ) // header finished, kick away
404  {
405  h->CutOut();
406 
407  if ( h->Boss ) h->Boss->nSub--; // inform the boss
408 
409  delete h;
410 
411  goto beginloop;
412  }
413  // proceed
414  proceed(h, 0);
415 
416  h->Read();
417 
418  if ( h->nSub != -1 ) goto beginloop;
419 
420  if ( !(h->Time) ) // token without duration
421  h->CursorNext();
422  }
423  // check MinTime
424  if ( MinTime == frac(-1,1) || h->Time < MinTime )
425  MinTime = h->Time;
426 
427  // next Header
428  Head = &(h->Next);
429  }
430 
431  return MinTime;
432 }
GisToken * Cursor
Definition: GIS_Head.h:71
GisReadArtHead * h
Definition: mutgis.cpp:5
GisReadHead * Boss
Definition: GIS_Head.h:69
GisToken * CursorNext()
Definition: GIS_Head.h:106
GisReadHead * Next
Definition: GIS_Head.h:68
GisReadHead * CutOut()
Definition: GIS_Head.cpp:215
mutabor::frac Time
Definition: GIS_Head.h:72
void Read()
Definition: GIS_Head.cpp:316
int nSub
Definition: GIS_Head.h:70

◆ GisWriteHeadGis()

int GisWriteHeadGis ( GisWriteHead **  head,
std::string  id,
GisToken token,
char  turn 
)

Definiert in Zeile 1493 der Datei GIS_Head.cpp.

Benutzt GetMatchingHeader() und GisWriteHead::ProceedGis().

Wird benutzt von mutabor::OutputGis::do_Gis() und GisWriteHead::GetKey().

1494 {
1495  return GetMatchingHeader(head, id)->ProceedGis(token, turn);
1496 }
GisWriteHead * GetMatchingHeader(GisWriteHead **head, const std::string id)
Definition: GIS_Head.cpp:1438
int ProceedGis(GisToken *token, char turn=0)
Definition: GIS_Head.cpp:1248

◆ GspParse()

int GspParse ( const std::string FileName)

Definiert in Zeile 675 der Datei GSP.cpp.

Benutzt BracketDeep, Brackets, CHAR0, CheckError(), CloseFile(), CurrentLine, CurrentPos, DoError(), DoParse(), Eof, GetSep(), GspCurrentLineNr, GspError, GspErrorLine, GspErrorLineNr, GspErrorPos, LastTag, octave, OpenFile() und StartSep().

Wird benutzt von GisParse().

676 {
677  GspCurrentLineNr = 0;
678  CurrentPos = 0;
679  CurrentLine = "";
680 
681  GspErrorLineNr = 0;
682  GspErrorPos = 0;
683  GspErrorLine = "";
684  GspError = 0;
685 
686  Eof = 0;
687 #ifdef WX
688  Brackets = "";
689 #else
690  BracketDeep = 0;
691 #endif
692  LastTag = 0;
693 
694  octave = 1;
695  duration = frac(1,4);
696 
697  if ( OpenFile(FileName) )
698  return DoError(30); // couldn't open file
699 
700  GetSep();
701 
702  if ( CheckError(StartSep()) )
703  return GspError;
704 
705 #ifdef GMN_STRICT
706  if ( !Eof && CHAR0 != '[' && CHAR0 != '{' )
707  DoError(40);
708 
709 #endif
710  if ( !GspError) DoParse();
711 
712  if ( CloseFile() )
713  return DoError(31); // couldn't close file
714 
715  return GspError;
716 }
int Eof
Definition: GSP_File.cpp:38
int GspErrorPos
Definition: GSP.cpp:30
#define CHAR0
Definition: GSP.cpp:179
int GspError
Definition: GSP.cpp:32
std::string GspErrorLine
Definition: GSP.cpp:31
int OpenFile(const std::string &Name)
Definition: GSP_File.cpp:53
int StartSep()
Definition: GIS.cpp:547
int CloseFile()
Definition: GSP_File.cpp:75
int DoParse()
Definition: GSP.cpp:526
static int octave
Definition: GSP.cpp:66
int CheckError(int nr)
Definition: GSP.cpp:157
std::string Brackets
Definition: GSP.cpp:56
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define BracketDeep
Definition: GSP.cpp:57
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:142
static frac duration
Definition: GSP.cpp:70
int GspCurrentLineNr
Definition: GSP.cpp:28
int GspErrorLineNr
Definition: GSP.cpp:29
char LastTag
Definition: GSP.cpp:63
int GetSep()
Definition: GSP.cpp:192

◆ handle_event() [1/2]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::handle_event ( event  e)
inline

Definiert in Zeile 240 der Datei Route-inlines.h.

240  {
241  if (Out) {
242  e->set_box(box);
243  Out->handle_event(e);
244  }
245  }
OutputDevice Out
Definition: Route.h:466

◆ handle_event() [2/2]

void mutabor::OutputDeviceClass::handle_event ( event  e)
inline

Definiert in Zeile 907 der Datei Device.h.

907  {
908  ScopedLock<OutputDeviceClass> lock(*this);
909  do_handle_event(e);
910  }
virtual void do_handle_event(event e)=0

◆ InClose()

void mutabor::InClose ( )

Definiert in Zeile 734 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList() und TRACE.

Wird benutzt von mutabor::InputDeviceClass::BatchPlay(), main(), mutabor::ScopedOutputDevice::operator=() und mutabor::BoxClass::StopAll().

735  {
736  TRACE;
737  const InputDeviceList& list = InputDeviceClass::GetDeviceList();
738  for (InputDeviceList::const_iterator In = list.begin();
739  In != list.end(); In++)
740  (*In)->Close();
741  TRACE;
742  }
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1020
#define TRACE
Definition: debug.h:299

◆ InitDeviceFactories()

void mutabor::InitDeviceFactories ( )

Definiert in Zeile 667 der Datei Device.cpp.

Wird benutzt von mutabor::DeviceFactory::Create(), main() und myDevice::Pause().

667  {
668  new BoxFactory;
669  new RouteFactory;
670  new MidiPortFactory;
671  new MidiFileFactory;
672  new GisFactory;
673  }

◆ initialize_box_data()

void mutabor::initialize_box_data ( )

Definiert in Zeile 1107 der Datei Box.cpp.

Benutzt mutabor::BoxClass::backend_callbacks und mutabor_set_callbacks().

Wird benutzt von IMPLEMENT_APP(), InputMidiFileTest::testAfterTouch(), InputMidiFileTest::testBoxMidiIn() und InputMidiFileTest::testSysEx().

1108  {
1109  mutabor_set_callbacks(& BoxClass::backend_callbacks);
1110  }
mutabor_callback_type * mutabor_set_callbacks(mutabor_callback_type *callbacks)
Set the callbacks for the mutabor backend.
Definition: Execute.cpp:117

◆ InitializeIds() [1/3]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::InitializeIds ( )
static

Initialize the internal device identifiers.

This function sets the internal device ids of all input devices, starting from 0 and incrementing by 1

Definiert in Zeile 214 der Datei Route.cpp.

215  {
217  int i = 0;
218  for (typename routeListType::iterator r = routeList.begin();
219  r != routeList.end(); r++) {
220  (*r) -> routefile_id = i++;
221  }
224  }
static void InitializeIds()
Initialize the internal device identifiers.
Definition: Box.cpp:193
static void InitializeIds()
Initialize the internal device identifiers.
Definition: Device.cpp:200
static routeListType routeList
Definition: Route.h:475

◆ InitializeIds() [2/3]

void mutabor::BoxClass::InitializeIds ( )
static

Initialize the internal device identifiers.

This function sets the internal device ids of all output devices, starting from 0 and incrementing by 1

Definiert in Zeile 193 der Datei Box.cpp.

Benutzt TRACET.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::InitializeIds().

194  {
195  TRACET(BoxClass);
196  size_t nr = 0;
197  for (typename listtype::iterator i = boxList.begin();
198  i != boxList.end();
199  i++) {
200  /* currently, the user provides the numeric ids, so we don't need to change them */
201  //(*i)->set_routefile_id(nr);
202  nr = (*i)->get_routefile_id();
203  routeListType & list = (*i)->routes;
204  for (routeListType::iterator j = list.begin();
205  j != list.end();
206  j++) {
207  //thistype * ptr = NULL;
208  (*j)->SetBoxId(nr);
209  }
210  // nr++;
211  }
212  return;
213 #if 0
214  for (typename listtype::iterator i = deviceList.begin();
215  i != deviceList.end();
216  i++) {
217  (*i)->set_routexfile_id(nr);
218  routeListType & list = (*i)->routes;
219  for (routeListType::iterator j = list.begin();
220  j != list.end();
221  j++) {
222  thistype * ptr = NULL;
223  (*j)->SetDeviceId(nr, ptr);
224  }
225  nr++;
226  }
227  TRACET(thistype);
228 #endif
229  }
static listtype boxList
Definition: Box.h:811
void SetBoxId(int Id)
Definition: Route.h:306
void SetDeviceId(int Id, I)
Definition: Route.h:299
#define TRACET(type)
Definition: debug.h:301
TRouteClass< InputDevice, OutputDevice, Box >::routeListType routeListType
Definition: Route.h:550
BoxClass(int id=-1)
Definition: Box.cpp:857

◆ InitializeIds() [3/3]

template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::InitializeIds ( )
static

Initialize the internal device identifiers.

This function sets the internal device ids of all output devices, starting from 0 and incrementing by 1

Definiert in Zeile 200 der Datei Device.cpp.

201  {
202  TRACET(thistype);
203  size_t nr = 0;
204  for (typename listtype::iterator i = deviceList.begin();
205  i != deviceList.end();
206  i++) {
207  (*i)->set_routefile_id(nr);
208  routeListType & list = (*i)->routes;
209  for (routeListType::iterator j = list.begin();
210  j != list.end();
211  j++) {
212  thistype * ptr = NULL;
213  (*j)->SetDeviceId(nr, ptr);
214  }
215  nr++;
216  }
217  TRACET(thistype);
218  }
static listtype deviceList
Definition: Device.h:697
#define TRACET(type)
Definition: debug.h:301
TRouteClass< InputDevice, OutputDevice, Box >::routeListType routeListType
Definition: Route.h:550

◆ InOpen()

bool mutabor::InOpen ( )

Definiert in Zeile 714 der Datei Device.cpp.

Benutzt DEBUGLOGBASE, mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList() und TRACE.

Wird benutzt von main(), mutabor::OpenAll() und mutabor::ScopedOutputDevice::operator=().

715  {
716  TRACE;
717  const InputDeviceList& list = InputDeviceClass::GetDeviceList();
718  for (InputDeviceList::const_iterator In = list.begin();
719  In != list.end(); In++)
720  if ( !(*In)->Open() ) {
721  for (InputDeviceList::const_iterator In1 = list.begin();
722  In1 != In; In1++)
723  (*In1)->Close();
724 
725  DEBUGLOGBASE(other,"",("Opening failed"));
726 
727  return false;
728  }
729 
730  TRACE;
731  return true;
732  }
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1020
#define TRACE
Definition: debug.h:299
#define DEBUGLOGBASE(level, type,...)
Definition: debug.h:293

◆ InputDeviceClass()

mutabor::InputDeviceClass::InputDeviceClass ( const std::string name = "",
mutabor::MutaborModeType  m = DeviceStop,
int  id = -1 
)
inlineprotected

Definiert in Zeile 1340 der Datei Device.h.

1342  :
1343  CommonTypedDeviceAPI<InputDeviceClass>(name, id)
1344  {
1345  Mode = m;
1346  }
enum MutaborModeType Mode
Definition: Device.h:655
const char * name
Definition: TabGen.cpp:59

◆ InsertAfter()

GisWriteHead * GisWriteHead::InsertAfter ( GisWriteHead position)

Definiert in Zeile 993 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::Next und GisWriteHead::Prev.

Wird benutzt von GetMatchingHeader().

994 {
995  if ( !position ) {
996  Next = 0;
997  Prev = 0;
998  return this;
999  }
1000 
1001  if ( position->Next ) // not last position
1002  position->Next->Prev = this;
1003 
1004  Next = position->Next;
1005 
1006  Prev = position;
1007 
1008  position->Next = this;
1009 
1010  return this;
1011 }
GisWriteHead * Next
Definition: GIS_Head.h:317
GisWriteHead * Prev
Definition: GIS_Head.h:317

◆ InsertInfrontOf()

GisReadHead * GisReadHead::InsertInfrontOf ( GisReadHead position)

Definiert in Zeile 146 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG und mutASSERT().

Wird benutzt von GisReadHead::Build() und GisReadHead::GisReadHead().

147 {
148  DEBUGLOG (gmnfile, "pos = %p; this = %p" ,(void*)position,(void*)this);
149 
150  if ( !position ) {
151  Next = NULL;
152  Prev = this;
153  return this;
154  }
155 
156 #if 0
157  // *(position->Prev) == position
158  if ( *(position->PrevPtr) == position ) { // first position
159  DEBUGLOG (gmnfile, "first position %p, Prev: %p, Next: %p, cmp: %p" ,
160  position,
161  position->Prev,
162  position->Next,
163  *((position->PrevPtr))
164  );
165  *(position->PrevPtr) = this;
166  } else { // normal position in list
167  DEBUGLOG (gmnfile, "first position %p, Prev: %p, Next: %p, cmp: %p" ,
168  position,
169  position->Prev,
170  position->Next,
171  *((GisReadHead**)(position->PrevPtr))
172  );
173  (*(position->PrevPtr))->Next = this;
174  }
175 
176  PrevPtr = position->PrevPtr;
177 
178  Next = position;
179  *(position->PrevPtr) = this;
180  return this;
181 #else
182  // *(position->Prev) == position
183 
184  if ( *(position->PrevPtr) == position ) { // first position
185  DEBUGLOG (gmnfile, "first position %p, Prev: %p, Next: %p, cmp: %p" ,
186  (void*)position,
187  (void*)position->Prev,
188  (void*)position->Next,
189  (void*)*((position->PrevPtr))
190  );
191  *(position->PrevPtr) = this;
192  PrevPtr = position->PrevPtr;
193  position->PrevPtr = &(position->Prev);
194  } else { // normal position in list
195  DEBUGLOG (gmnfile, "first position %p, Prev: %p, Next: %p, cmp: %p" ,
196  (void*)position,
197  (void*)position->Prev,
198  (void*)position->Next,
199  (void*)*((GisReadHead**)(position->PrevPtr))
200  );
201 
202  position->Prev->Next = this;
203  mutASSERT(position->PrevPtr == &(position->Prev));
204  }
205 
206  Prev = position->Prev;
207 
208  Next = position;
209  position->Prev = this;
210 
211  return this;
212 #endif
213 }
GisReadHead ** PrevPtr
Definition: GIS_Head.h:68
#define DEBUGLOG(level,...)
Definition: debug.h:294
GisReadHead * Next
Definition: GIS_Head.h:68
GisReadHead * Prev
Definition: GIS_Head.h:68
mutASSERT(p.get_intervals==cmp)

◆ interrupt_logic()

void mutabor::BoxClass::interrupt_logic ( bool  allow_resume = true)
inline

Break the execution of any running logic loops.

Parameter
allow_resumeif true allow the next call to the logic to resume logic execution

Definiert in Zeile 622 der Datei Box.h.

622  {
623  if (box) {
624  box->flags.break_logic = 1;
625  box->flags.auto_reset_break_logic = allow_resume;
626  }
627  }
unsigned int break_logic
If set to 1 Break the execution of the logic.
Definition: box.h:100
mutabor_box_type * box
Definition: Box.h:816
unsigned int auto_reset_break_logic
Automatically reset logic breaking.
Definition: box.h:104
volatile struct mutabor_box_flags flags
Definition: box.h:164

◆ is_active()

bool mutabor::BoxClass::tone::is_active ( )
inline

Definiert in Zeile 165 der Datei Box.h.

Benutzt mutabor_active_tone.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_NoteOn().

165  {
166  return active == hidden::mutabor_active_tone;
167  }

◆ is_changed_controller()

bool mutabor::ChannelData::is_changed_controller ( controller_vector::const_iterator  actual) const
inline

Definiert in Zeile 437 der Datei Device.h.

Benutzt mutASSERT().

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::CopyProgramChange() und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_UpdateControllers().

437  {
438  mutASSERT(controller_changed.begin() <= actual);
439  mutASSERT(actual<= controller_changed.end());
440  if (actual == controller_changed.end()) return false;
441  if (*actual == -1) return false;
442  mutASSERT(0<= *actual);
443  mutASSERT((size_t)(*actual) < controller.size());
444  return true;
445  }
controller_vector controller
Definition: Device.h:495
controller_vector controller_changed
Definition: Device.h:496
mutASSERT(p.get_intervals==cmp)

◆ is_compatible()

bool mutabor::ChannelData::is_compatible ( const ChannelData cd) const
inline

Definiert in Zeile 472 der Datei Device.h.

Benutzt mutabor::ChannelData::controller und mutabor::ChannelData::Sound.

472  {
473  /* \todo check that ignoring pitch bend is ok */
474  if (Sound != -1 && cd.Sound != -1
475  && Sound != cd.Sound) return false;
476  if (controller.size()
477  != cd.controller.size()) return false;
478 
479  /* \todo optimization */
480  for (size_t i = 0 ; i < std::min(controller.size(),cd.controller.size()) ; i++) {
481  if (controller[i] != -1
482  && cd.controller[i] != -1
483  && controller[i] != cd.controller[i]) return false;
484  }
485  return true;
486  }
controller_vector controller
Definition: Device.h:495
mutabor::ChannelData cd

◆ is_empty()

bool mutabor::BoxClass::tone::is_empty ( )
inline

Definiert in Zeile 169 der Datei Box.h.

Benutzt mutabor_empty_tone.

169  {
170  return active == hidden::mutabor_empty_tone;
171  }

◆ is_harmony_trigger()

bool is_harmony_trigger ( struct any_trigger &  trigger)
inline

Definiert in Zeile 87 der Datei Box-inlines.h.

Benutzt key.

87  {
88  return trigger.type == any_trigger::key;
89 }
#define key

◆ is_key_trigger()

bool is_key_trigger ( struct any_trigger &  trigger)
inline

Definiert in Zeile 84 der Datei Box-inlines.h.

Benutzt key.

84  {
85  return trigger.type == any_trigger::key;
86 }
#define key

◆ is_midi_trigger()

bool is_midi_trigger ( struct any_trigger &  trigger)
inline

Definiert in Zeile 90 der Datei Box-inlines.h.

Benutzt key.

90  {
91  return trigger.type == any_trigger::key;
92 }
#define key

◆ is_ok()

bool mutabor::BoxClass::tone::is_ok ( )
inline

Definiert in Zeile 161 der Datei Box.h.

Benutzt mutabor_invalid_tone.

161  {
162  return active != hidden::mutabor_invalid_tone;
163  }

◆ IsDelta()

static bool mutabor::InputDeviceClass::IsDelta ( boost::chrono::microseconds  d)
inlinestatic

Definiert in Zeile 1258 der Datei Device.h.

Benutzt string.

1258  {
1259  return d != NO_DELTA();
1260  }
static boost::chrono::microseconds NO_DELTA()
Definition: Device.h:1254

◆ IsDirty()

bool mutabor::Device::IsDirty ( ) const
inline

Definiert in Zeile 634 der Datei Device.h.

634 { return dirty; }

◆ IsInBoxList()

static bool mutabor::BoxClass::IsInBoxList ( const Box  b)
inlinestaticprotected

Definiert in Zeile 869 der Datei Box.h.

869  {
870  return FindInBoxList(b) != boxList.end();
871  }
static listtype boxList
Definition: Box.h:811
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:862

◆ IsInDeviceList()

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
static bool mutabor::CommonTypedDeviceAPI< T, P, L >::IsInDeviceList ( const DevicePtr  dev)
inlinestaticprotected

Definiert in Zeile 826 der Datei Device.h.

826  {
827  return FindInDeviceList(dev) != deviceList.end();
828  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:819
static listtype deviceList
Definition: Device.h:697

◆ IsLetter()

int IsLetter ( char  c)
inline

Definiert in Zeile 96 der Datei GSP.cpp.

Benutzt AddStr(), CharIn() und string.

Wird benutzt von DoParse(), ReadNote() und ReadTag().

97 {
98  return (('a' <= c) && (c <= 'z')) ||
99  (('A' <= c) && (c <= 'Z')) ||
100  ( c == ('_') );
101 }

◆ IsLogicKey()

bool mutabor::BoxClass::IsLogicKey ( int  key)

Definiert in Zeile 829 der Datei Box.cpp.

Benutzt box und mutabor::is_logic_key().

829  {
830  if (is_logic_key(box->file->global_keystrokes, key))
831  return true;
832  return is_logic_key(box->current_logic->keystroke_list, key);
833  }
static bool is_logic_key(struct keyboard_ereignis *e, int key)
Definition: Box.cpp:820
struct logik * current_logic
Definition: box.h:155
mutabor_box_type * box
Definition: Box.h:816
struct mutabor_logic_parsed * file
Definition: box.h:162
#define key

◆ IsNormal()

bool mutabor::BoxClass::IsNormal ( )
inline

Definiert in Zeile 293 der Datei Box.h.

Benutzt mutabor::Box0.

293  {
294  return routefile_id >= Box0;
295  }
int routefile_id
Definition: Box.h:818

◆ IsOpen() [1/2]

bool mutabor::BoxClass::IsOpen ( )
inline

Definiert in Zeile 447 der Datei Box.h.

447 { return open; }

◆ IsOpen() [2/2]

bool mutabor::Device::IsOpen ( ) const
inline

◆ issue_error()

void mutabor::BoxClass::issue_error ( error_type  type,
const char *  format,
  ... 
)
inline

Format and process a runtime error message or warning.

Parameter
typeerror type.
formatFormat string

Definiert in Zeile 722 der Datei Box.h.

Benutzt _mut und runtime_error.

722  {
723  char * formatted;
724  va_list args;
725  bool allocated = true;
726  va_start(args,format);
727  if (vasprintf(&formatted,format,args) == -1) {
728  allocated = false;
729  formatted = (char *)_mut("Error in Error: Could not allocate buffer for error message.");
730  if (!formatted) {
731  formatted =
732  (char *) "Error in Error: Could not allocate buffer for error message.";
733  }
734  }
735  va_end(args);
736  runtime_error(type,formatted);
737  if (allocated)
738  free(formatted);
739  }
#define _mut
Definition: Defs.h:138
virtual void runtime_error(error_type type, const char *message)
Process an error message (doing the real work)
Definition: Box.cpp:853

◆ KeyboardAnalysis() [1/2]

void mutabor::BoxClass::KeyboardAnalysis ( int  key,
KeyboardFlags  flags 
)
inline

Execute the action associated with a key that is pressed on the computer keyboard.

Parameter
keyKey that has been pressed.
flagsFlags which type of action should be taken.

Definiert in Zeile 586 der Datei Box.h.

Benutzt KeyboardAnalyse() und KeyboardAnalyseSimple().

586  {
587  scoped_watchdog lock(this);
588  switch (flags) {
589  case KeyboardNoLogic:
590  case KeyboardLogic:
592  break;
593  case KeyboardAny:
595  break;
596  }
597  }
void KeyboardAnalyse(mutabor_box_type *box, int taste, char isLogic)
Definition: Execute.cpp:1219
mutabor_box_type * box
Definition: Box.h:816
#define key
void KeyboardAnalyseSimple(mutabor_box_type *box, int taste)
Definition: Execute.cpp:1224

◆ KeyboardAnalysis() [2/2]

void mutabor::BoxClass::KeyboardAnalysis ( const std::string  keys)
inline

Execute the actions that are associated with the characters of a string.

Zu beachten
: The character “&” denotes that the following character will not be a logic.
Parameter
keys

Definiert in Zeile 607 der Datei Box.h.

Benutzt KeyboardIn().

607  {
608  scoped_watchdog lock(this);
609  hidden::KeyboardIn(box,keys.c_str());
610  }
mutabor_box_type * box
Definition: Box.h:816
void KeyboardIn(mutabor_box_type *box, const char *keys)
Definition: Execute.cpp:1049

◆ Load() [1/5]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Load ( tree_storage config)
virtual

Read the route into from a tree based configuration.

config (tree_storage &) configuration where the route settings will be read from

Definiert in Zeile 88 der Datei Route.cpp.

89  {
90 #ifdef DEBUG
91  std::string oldpath = config.GetPath();
92 #endif
93  connect(this,BoxClass::GetOrCreateBox(config.Read("Box",NoBox)));
94  Active = config.Read("Active",true);
95  if (In)
96  In->Load(config,this);
97  if (Out)
98  Out->Load(config,this);
99  mutASSERT(oldpath == config.GetPath());
100  }
InputDevice In
Definition: Route.h:467
#define string
static Box GetOrCreateBox(int id)
Return the box that is associated with the corrent id.
Definition: Box.h:1002
mutASSERT(p.get_intervals==cmp)
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
OutputDevice Out
Definition: Route.h:466

◆ Load() [2/5]

void mutabor::BoxClass::Load ( tree_storage config)
virtual

Load current device settings from a tree storage.

config (tree_storage) storage class, where the data will be loaded from.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 123 der Datei Box.cpp.

Benutzt mutUnused.

Wird benutzt von mutaborGUI::BoxData::Load() und mutabor::BoxFactory::LoadBoxes().

123  {
124  mutUnused(config);
125  }
#define mutUnused(expr)
Definition: Defs.h:106

◆ Load() [3/5]

void mutabor::BoxClass::Load ( tree_storage config,
RouteClass route 
)
virtual

Load route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function loads them from a tree storage. config (tree_storage *) Storage class, where the data will be restored from. route (Route) Route whos data shall be loaded.

Definiert in Zeile 127 der Datei Box.cpp.

Benutzt mutUnused.

128  {
129  mutUnused(config);
130  mutUnused(route);
131  }
mutabor::Route route
#define mutUnused(expr)
Definition: Defs.h:106

◆ Load() [4/5]

virtual void mutabor::Device::Load ( tree_storage config)
pure virtual

◆ Load() [5/5]

virtual void mutabor::Device::Load ( tree_storage config,
RouteClass route 
)
pure virtual

Load route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function loads them from a tree storage. config (tree_storage *) Storage class, where the data will be restored from. route (Route) Route whos data shall be loaded.

Implementiert in mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, midicmnInputDevice, testCommonFileDeviceTimer, testCommonFileDeviceTimer, mutabor::OutputGis und midicmnOutputDevice.

◆ LoadBoxes()

void mutabor::BoxFactory::LoadBoxes ( tree_storage config)
static

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 1013 der Datei Box.cpp.

Benutzt mutabor::BoxFactory::Create(), DEBUGLOGTYPE, mutabor::tree_storage::getNOT_FOUND(), mutabor::tree_storage::GetPath(), mutabor::BoxClass::Load(), mutASSERT(), mutabor::NoBox, mutabor::tree_storage::Read(), mutabor::BoxClass::set_routefile_id(), string, mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::DoLoadRoutes().

1014  {
1015 #ifdef DEBUG
1016  std::string oldpath = config.GetPath();
1017 #endif
1018  config.toLeaf(("Boxes"));
1019  const int NOT_FOUND = config.getNOT_FOUND();
1020  int i = config.toFirstLeaf(("Box"));
1021  while (i != NOT_FOUND) {
1022  DEBUGLOGTYPE(config,BoxClass,("Loading box device with id %d"),i);
1023  int type = config.Read(("Type"), NoBox);
1024  Box b = BoxFactory::Create(type);
1025  if (!b) continue;
1026  b -> set_routefile_id(i);
1027  b -> Load(config);
1028  i = config.toNextLeaf(("Box"));
1029  }
1030 
1031  config.toParent(2);
1032  mutASSERT(oldpath == config.GetPath());
1033  }
#define string
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:296
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
mutASSERT(p.get_intervals==cmp)
static Box Create(int type, int id=NewBox)
Definition: Box.h:905

◆ LoadInputDevices()

void mutabor::DeviceFactory::LoadInputDevices ( tree_storage config)
static

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 585 der Datei Device.cpp.

Benutzt DEBUGLOGTYPE, mutabor::DTMidiPort, mutabor::tree_storage::getNOT_FOUND(), mutabor::tree_storage::GetPath(), in, mutASSERT(), name, mutabor::tree_storage::Read(), mutabor::Device::set_routefile_id(), string, mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf(), mutabor::tree_storage::toParent() und TRACE.

Wird benutzt von mutabor::RouteFactory::DoLoadRoutes().

586  {
587 #ifdef DEBUG
588  std::string oldpath = config.GetPath();
589 #endif
590  config.toLeaf("InputDevices");
591  const int NOT_FOUND = config.getNOT_FOUND();
592  int i = config.toFirstLeaf("Device");
593  while (i != NOT_FOUND) {
594  DevType type = (DevType) config.Read("Type", DTMidiPort);
595  TRACE;
596  InputDevice in = CreateInput(type);
597  TRACE;
598  in -> Device::set_routefile_id(i);
599 #ifdef DEBUG
600  std::string name = config.Read("Type Name",
601  "Midi input device");
602  DEBUGLOGTYPE(config,
603  InputDeviceClass,
604  ("device type name '%s' == '%s'?"),
605  name,
606  (in->GetTypeName()));
607  mutASSERT(name == in -> GetTypeName());
608 #endif
609  in -> Load(config);
610  TRACE;
611  i = config.toNextLeaf("Device");
612  }
613 
614  config.toParent(2);
615  mutASSERT(oldpath == config.GetPath());
616  }
#define string
DevType
Definition: Device.h:93
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:296
mutabor::InputMidiFile * in
const char * name
Definition: TabGen.cpp:59
void set_routefile_id(int id)
Definition: Device.h:674
mutASSERT(p.get_intervals==cmp)
#define TRACE
Definition: debug.h:299
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1018
static InputDevice CreateInput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1407

◆ LoadOutputDevices()

void mutabor::DeviceFactory::LoadOutputDevices ( tree_storage config)
static

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 531 der Datei Device.cpp.

Benutzt mutabor::DeviceFactory::CreateOutput(), DEBUGLOGTYPE, mutabor::DTMidiPort, mutabor::tree_storage::getNOT_FOUND(), mutabor::tree_storage::GetPath(), mutASSERT(), name, out, mutabor::tree_storage::Read(), string, mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::DoLoadRoutes().

532  {
533 #ifdef DEBUG
534  std::string oldpath = config.GetPath();
535 #endif
536  config.toLeaf("OutputDevices");
537  int NOT_FOUND = config.getNOT_FOUND();
538 
539  int i = config.toFirstLeaf("Device");
540  while (i != NOT_FOUND) {
541  DEBUGLOGTYPE(config,OutputDeviceClass,"Loading output device with id %d",i);
542  DevType type = (DevType) config.Read("Type", DTMidiPort);
544  if (!out) continue;
545  out -> set_routefile_id(i);
546  std::string name = config.Read("Type Name",
547  "Midi output device");
548  DEBUGLOGTYPE(config,
549  OutputDeviceClass,
550  "device type name '%s' == '%s'?",
551  name,
552  (out->GetTypeName()));
553  mutASSERT(name == out->GetTypeName());
554  out -> Load(config);
555  i = config.toNextLeaf("Device");
556  }
557 
558  config.toParent(2);
559  mutASSERT(oldpath == config.GetPath());
560  }
#define string
DevType
Definition: Device.h:93
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:296
static OutputDevice CreateOutput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1389
const char * name
Definition: TabGen.cpp:59
mutabor::OutputMidiFile * out
mutASSERT(p.get_intervals==cmp)
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:839

◆ LoadRoutes() [1/3]

void compat30::LoadRoutes ( const std::string )

load the routes from a text string

Parameter
configstring to be read from
Rückgabe
the error message in case of an error.

Definiert in Zeile 126 der Datei RouteCompat.cpp.

Benutzt box, mutabor::BoxClass::ClearBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::ClearDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::ClearDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::ClearRouteList(), mutabor::RouteFactory::Create(), mutabor::DeviceFactory::CreateInput(), mutabor::DeviceFactory::CreateOutput(), DEBUGLOG2, mutabor::DTGis, mutabor::DTMidiFile, mutabor::DTMidiPort, mutabor::DTNotSet, mutabor::DTUnknown, GETLINE, mutabor::BoxClass::GetOrCreateBox(), compat30::GetOut(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::InitializeIds(), mutabor::rtmidiin, mutabor::rtmidiout, compat30::Str2DT(), compat30::Str2RT(), string, STUB, TRACE und UNREACHABLE.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteLoad() und compat30::RouteIOError::RouteIOError().

127  {
128  bool error = false;
129 
130  TRACE;
131 
132  // empty lists
133  TRACE;
134  InputDeviceClass::ClearDeviceList();
135  TRACE;
136  OutputDeviceClass::ClearDeviceList();
137  TRACE;
138  RouteClass::ClearRouteList();
139  TRACE;
140  BoxClass::ClearBoxList();
141  TRACE;
142 
143  // Zerlegen von config
144  std::string s;
145  size_t i = 0;
146  GETLINE;
147 
148  DEBUGLOG2(routing,("+%s"),s.c_str());
149 
150  while ( s.substr(0,6) != "OUTPUT") {
151  GETLINE;
152  DEBUGLOG2(other,("+%s"),s.c_str());
153  }
154 
155  GETLINE;
156  DEBUGLOG2(routing,("+%s"),s.c_str());
157  // Output lesen
158  while ( s.substr(0,5) != "INPUT") {
159  std::vector<char> Type(s.length()+1), Name(s.length()+1);
160  int DevId, BendingRange;
161 
162  DEBUGLOG2(routing,("a%s"),s.c_str());
163 
164  int test = std::sscanf(s.c_str(), ("%s \"%[^\"]\" %d %d"),
165  Type.data(), Name.data(), &DevId, &BendingRange);
166  if ( test < 2 )
167  test = std::sscanf(s.c_str(), ("%s %s %d %d"),
168  Type.data(), Name.data(), &DevId, &BendingRange);
169 
170  if ( test < 3 ) {
171  error = true;
172  }
173  DEBUGLOG2(routing,("%d parameters read: Type = '%s', Name = '%s', devid = %d, bendingrange = %d"),
174  test,(const char *)Type.data(),(const char * )Name.data(),DevId,BendingRange);
175  DEBUGLOG2(routing,("Name = '%s'"),(std::string(Name.data()).c_str()));
176  OutputDevice Out =
177  DeviceFactory::CreateOutput(Str2DT(Type.data()),
178  Name.data());
179 
180  switch (Str2DT(Type.data())) {
181  case DTMidiPort:
182  if (test < 4)
183  error = true;
184  else {
185  OutputMidiPort * dev =
186  dynamic_cast<OutputMidiPort *>(Out.get());
187  if (!dev)
188  UNREACHABLE;
189  else if (rtmidiout) {
190  rtmidi::PortList list = rtmidiout->getPortList();
191  rtmidi::PortList::iterator i = list.begin();
192  while (DevId && ++i != list.end()) DevId--;
193  if (i != list.end())
194  dev -> SetDevId(*i);
195  }
196  dev -> SetBendingRange (BendingRange);
197  }
198  break;
199  case DTMidiFile:
200  if (test < 4)
201  error = true;
202  else {
203  OutputMidiFile * dev =
204  dynamic_cast<OutputMidiFile *>(Out.get());
205  if (!dev)
206  UNREACHABLE;
207  else
208  dev -> SetBendingRange (BendingRange);
209  }
210  break;
211  case DTUnknown:
212  case DTGis:
213  default:
214  if (test >= 4) error = true;
215  }
216 
217  GETLINE;
218  DEBUGLOG2(other,("+%s"),s.c_str());
219  }
220 
221  OutputDeviceClass::InitializeIds();
222 
223  GETLINE;
224  DEBUGLOG2(routing,("+%s"),s.c_str());
225  // Input lesen
226 
227  while ( 1 ) {
228  // Device lesen
229  std::vector<char> Type(s.length()+1), Name(s.length()+1);
230  //std::string Type, Name;
231  int DevId = -1;
232  int test = std::sscanf(s.c_str(), ("%s \"%[^\"]\" %d"),
233  Type.data(), Name.data(), &DevId);
234  if ( test < 2 )
235  test = std::sscanf(s.c_str(), ("%s %s %d"),
236  Type.data(), Name.data(), &DevId);
237  if ( test < 3 ) {
238  error = 1;
239  }
240 
241  DEBUGLOG2(routing,("%d input parameters read: Type = '%s', Name = '%s', DevId = %d"),
242  test, (const char *)Type.data(), (const char *)Name.data(), DevId);
243  InputDevice In =
244  DeviceFactory::CreateInput(Str2DT(Type.data()),
245  (std::string)Name.data());
246 
247  switch (Str2DT(Type.data())) {
248  case DTMidiPort: {
249  if (rtmidiin) {
250  rtmidi::PortList list = rtmidiin->getPortList();
251  rtmidi::PortList::iterator i = list.begin();
252  while (DevId && ++i != list.end()) DevId--;
253  if (i != list.end())
254  static_cast<InputMidiPort *>(In.get()) -> SetDevId(*i);
255  }
256  }
257  case DTNotSet:
258  case DTUnknown:
259  case DTMidiFile:
260  case DTGis:
261  default:
262  /* do nothing, here */
263  ;
264  }
265  GETLINE;
266  DEBUGLOG2(routing,("+%s"),s.c_str());
267 
268  // Routen lesen
269  while ( Str2DT(s) == DTUnknown ) {
270  // Route lesen
271  std::vector<char> Type(s.length()+1);
272  int IFrom = 0, ITo = 0, boxid = 0, BoxActive = 0,
273  OutDev = -1, OFrom = -1, OTo = -1, ONoDrum = 1;
274  test = std::sscanf(s.c_str(),
275  ("%s %d %d %d %d %d %d %d %d"),
276  Type.data(), &IFrom, &ITo, &boxid, &BoxActive,
277  &OutDev, &OFrom, &OTo, &ONoDrum);
278 
279  if ( test < 9 ) {
280  error = true;
281  }
282 
283  DEBUGLOG2(routing,("%d parameters read: Type = '%s', IFrom = %d, ITo = %d"),
284  test, (const char *)Type.data(), IFrom, ITo);
285  DEBUGLOG2(routing,(" boxid = %d, BoxActive= %d, OutDev = %d, OFrom = %d, OTo = %d, ONoDrum = %d"), boxid, BoxActive, OutDev, OFrom, OTo, ONoDrum);
286 
287  OutputDevice Out = GetOut(OutDev);
288  Box box = BoxClass::GetOrCreateBox(boxid);
289  Route r(RouteFactory::Create(In, Out,
290  Str2RT(Type.data()),
291  IFrom, ITo, box,
292  BoxActive,
293  OFrom, OTo, ONoDrum != 0));
294  In->Add(r);
295  GETLINE;
296  DEBUGLOG2(routing,("+%s"),s.c_str());
297  }
298  }
299  if (error) {
300  STUB;
301  }
302  return;
303  }
rtmidi::MidiOut * rtmidiout
Definition: DevMidi.cpp:610
#define GETLINE
Definition: RouteCompat.cpp:47
#define string
#define STUB
Definition: debug.h:304
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:548
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:839
#define TRACE
Definition: debug.h:299
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1018
#define DEBUGLOG2(level,...)
Definition: debug.h:295
static DevType Str2DT(const std::string type)
Definition: RouteCompat.cpp:76
rtmidi::MidiIn * rtmidiin
Definition: DevMidi.cpp:611
static RouteType Str2RT(char *type)
parse a string representation of a route type
Definition: RouteCompat.cpp:64
mutabor::Box box
static OutputDevice GetOut(int nr)
Definition: RouteCompat.cpp:50
#define UNREACHABLE
Definition: debug.h:308

◆ LoadRoutes() [2/3]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::LoadRoutes ( tree_storage config)
static

Load the current routes from a tree storage.

This function loads all routs from a tree based storage. config (tree_storage *) storage driver to use for saving.

Definiert in Zeile 247 der Datei Route.cpp.

248  {
249 #ifdef DEBUG
250  std::string oldpath = config.GetPath();
251 #endif
252  config.toLeaf("Routes");
253  const int NOT_FOUND = config.getNOT_FOUND();
254 
255  int i = config.toFirstLeaf("Route");
256  while (i != NOT_FOUND) {
257  DEBUGLOGTYPE(config,Route,("Loading route with id %d."), i);
258  // \todo replace -1 by a correct default
259  int inputid = config.Read("Input Device", -1);
260  int outputid = config.Read("Output Device", -1);
261  TRACET(thistype);
263  TRACET(thistype);
265  TRACET(thistype);
266  Route route = RouteFactory::Create(in,out);
267  TRACET(thistype);
268  if (route)
269  route -> Load(config);
270  DEBUGLOGTYPE(smartptr,thistype,
271  ("route is %p (%d)"),
272  (void*)route.get(),
273  (int)intrusive_ptr_get_refcount(route.get()));
274  i = config.toNextLeaf("Route");
275  }
276 
277  config.toParent(2);
278  mutASSERT(oldpath == config.GetPath());
279  }
#define string
mutabor::Route route
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:296
mutabor::InputMidiFile * in
static DevicePtr GetDevice(int id, devidtype kind)
Scan the list of input devices for a given id.
Definition: Device.cpp:222
mutabor::OutputMidiFile * out
mutASSERT(p.get_intervals==cmp)
#define TRACET(type)
Definition: debug.h:301
virtual void Load(tree_storage &config)
Read the route into from a tree based configuration.
Definition: Route.cpp:88
TRouteClass thistype
Definition: Route.h:114
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:120
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ LoadRoutes() [3/3]

static void mutabor::RouteFactory::LoadRoutes ( tree_storage config)
inlinestatic

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 661 der Datei Route.h.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteLoad() und LoadRoutes().

661  {
662  if (factory)
663  factory->DoLoadRoutes(config);
664  else
665  BOOST_THROW_EXCEPTION( RouteFactoryNotSet());
666 // UNREACHABLECT(RouteFactory);
667  }
virtual void DoLoadRoutes(tree_storage &config) const
load the routes from a tree based configuration
Definition: Route.cpp:570
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:748

◆ lock_callback()

void mutabor::BoxClass::lock_callback ( hidden::mutabor_logic_parsed logic)
static

Definiert in Zeile 949 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_logic_parsed::mutex.

949  {
950  if (!logic->mutex) {
951  logic->mutex = new Mutex<>;
952  }
953  if (logic->mutex) {
954  static_cast<Mutex<> *>(logic->mutex)->Lock();
955  }
956  }
Definition: thread.h:268

◆ log_action()

void mutabor::BoxClass::log_action ( mutabor_box_type box,
const char *  action 
)
static

Definiert in Zeile 974 der Datei Box.cpp.

Benutzt mutabor::BoxClass::box und mutabor::BoxClass::ExecuteCallbacks().

975  {
976 
977  BoxClass * box =
978  reinterpret_cast<BoxClass *>(b -> userdata);
979  box->ExecuteCallbacks(action);
980  }
BoxClass(int id=-1)
Definition: Box.cpp:857

◆ MidiAnalysis() [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::MidiAnalysis ( const std::vector< unsigned char > &  midiCode)
inline

Definiert in Zeile 212 der Datei Route.h.

212  {
213 #if 0
214  static const int midilength[8] = {
216  3, 3, 3, 3, 2, 2, 3, 1
217  };
218 #endif
219 
220  if (!(box && box->IsNormal() && Active )) return;
221  if (!(midiCode[0] & 0x80)) {
222  UNREACHABLEC;
223  return;
224  }
225 #if 0
226  int len = midilength[(midiCode[0] & 0x70) >> 4];
227  for (int i = 0; i < len; i++) {
228  if (box)
229  box->MidiAnalysis(midiCode & 0xff);
230  midiCode >>= 8;
231  }
232 #endif
233  if (box) box->MidiAnalysis(midiCode);
234  }
#define UNREACHABLEC
Definition: debug.h:310

◆ MidiAnalysis() [2/2]

void mutabor::BoxClass::MidiAnalysis ( const std::vector< unsigned char > &  midiCode)
inline

Definiert in Zeile 534 der Datei Box.h.

Benutzt key und MidiAnalysis().

534  {
535  scoped_watchdog lock(this);
536  hidden::MidiAnalysis(box, midiCode.data(), midiCode.size());
537  }
mutabor_box_type * box
Definition: Box.h:816
void MidiAnalysis(mutabor_box_type *box, const uint8_t *message, size_t size)
Definition: Execute.cpp:1128

◆ MidiOut() [1/4]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::MidiOut ( midi_string data)
inline

Definiert in Zeile 236 der Datei Route.h.

236  {
237  if (Out)
238  Out->MidiOut(box,data);
239  }
OutputDevice Out
Definition: Route.h:466

◆ MidiOut() [2/4]

void mutabor::BoxClass::MidiOut ( struct midiliste outliste)

Definiert in Zeile 781 der Datei Box.cpp.

Benutzt mutabor::hidden::midiliste::midi_code und mutabor::hidden::midi_list_laenge().

Wird benutzt von mutabor::BoxClass::MidiOutCallback().

781  {
782  size_t laenge = midi_list_laenge(outliste);
783  midi_string data(laenge);
784  struct midiliste * cursor = outliste;
785  uint8_t * bcursor = data.data();
786  while (cursor != NULL) {
787  (*bcursor++) = (uint8_t) cursor->midi_code;
788  cursor = cursor -> next;
789  }
790 
791  for (routeListType::const_iterator R = routes.begin();
792  R != routes.end(); R++) {
793  (*R) -> MidiOut(data);
794  }
795  }
void MidiOut(struct midiliste *outliste)
Definition: Box.cpp:781
int midi_list_laenge(const struct midiliste *list)
Definition: Parser.cpp:114
std::vector< uint8_t > midi_string
Definition: Device.h:77
routeListType routes
Definition: Box.h:819

◆ MidiOut() [3/4]

void mutabor::OutputDeviceClass::MidiOut ( mutabor::Box  box,
midi_string  data 
)
inline

Definiert in Zeile 898 der Datei Device.h.

898  {
899  ScopedLock<OutputDeviceClass> lock(*this);
900  do_MidiOut(box,data);
901  }
virtual void do_MidiOut(mutabor::Box box, midi_string data)=0
mutabor::Box box

◆ MidiOut() [4/4]

void mutabor::OutputDeviceClass::MidiOut ( uint8_t *  p,
size_t  n 
)
inline

Definiert in Zeile 902 der Datei Device.h.

902  {
903  ScopedLock<OutputDeviceClass> lock(*this);
904  do_MidiOut(p,n);
905  }
virtual void do_MidiOut(mutabor::Box box, midi_string data)=0
string_parser p("\onstant tone system\0")

◆ MidiOutCallback()

void mutabor::BoxClass::MidiOutCallback ( mutabor::hidden::mutabor_box_type b,
struct mutabor::hidden::midiliste outliste 
)
static

Definiert in Zeile 925 der Datei Box.cpp.

Benutzt mutabor::BoxClass::box und mutabor::BoxClass::MidiOut().

926  {
927  BoxClass * box =
928  reinterpret_cast<BoxClass *>(b -> userdata);
929  if (!box) return;
930  box->MidiOut(outliste);
931  }
mutabor_box_type * box
Definition: Box.h:816
BoxClass(int id=-1)
Definition: Box.cpp:857

◆ MidiReset()

void mutabor::ChannelData::MidiReset ( )

Reset the controllers according to the MIDI standard.

This function resets the Midi Controllers according to RP15 from the MMA.

Siehe auch
http://www.midi.org/techspecs/rp15.php

Definiert in Zeile 48 der Datei Device.cpp.

Benutzt mutabor::ChannelData::bend, mutabor::ChannelData::controller, mutabor::midi::get_default_controller_value(), mutabor::idtype< T >::idpool und mutabor::ChannelData::set_controller().

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_Controller().

48  {
49  /* RP 15 spec is availlable at http://www.midi.org/techspecs/rp15.php */
50  controller_vector::iterator start = controller.begin();
51  for (controller_vector::iterator i = start;
52  i != controller.end();
53  ++i) {
54  int value = *i;
55  if (value < 0)
56  continue;
57  int ctrl = i-start;
58  int newvalue = midi::get_default_controller_value(ctrl);
59  if (newvalue >= 0) {
60  set_controller(ctrl,newvalue);
61  }
62  }
63  // we do not send the reset controllers message so we
64  // may not forget the changed controllers
65 
66  // first_unchanged = 0;
67  // looped = false;
68 
69  // program change should not be reset
70  // Sound = -1;
71 
72  // bank should not be reset
73  // bank_coarse = -1;
74  //bank_fine = -1;
75 
76  bend = 0;
77 
78  // todo:
79  // channel pressure = 0
80  // polyphonic pressure = 0 for all notes
81  }
int get_default_controller_value(int ctrl)
Definition: MidiKern.h:442
controller_vector controller
Definition: Device.h:495
int set_controller(size_t number, int data)
Definition: Device.h:159

◆ MoveInList() [1/2]

int mutabor::BoxClass::MoveInList ( int  count)
virtual

Move the box in the box list.

Parameter
countNumber of places the box should be moved up. Negative values indicate downwards direction.
Rückgabe
new position in the box list.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 256 der Datei Box.cpp.

Wird benutzt von mutaborGUI::BoxData::MoveInList().

256  {
257  if (!count) return -1;
258  typename listtype::iterator pos = FindInBoxList(Box(this));
259 
260  if (pos == boxList.end()) return -1;
261  int current_pos = pos - boxList.begin();
262  typename listtype::iterator newpos;
263  if (current_pos + count <= 0) {
264  newpos = boxList.begin();
265  count = -1;
266  } else if ((size_t)(current_pos + count) >= boxList.size()) {
267  newpos = boxList.end() - 1;
268  count = 1;
269  } else {
270  newpos = pos + count;
271  }
272 
273  if (count > 0)
274  std::rotate (pos, newpos, newpos + 1);
275  else
276  std::rotate (newpos, pos, pos + 1);
277  return newpos - boxList.begin();
278 
279  }
static listtype boxList
Definition: Box.h:811
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:862

◆ MoveInList() [2/2]

template<class T , class P , class L >
int mutabor::CommonTypedDeviceAPI< T, P, L >::MoveInList ( int  count)
virtual

Move the device in the device list.

Parameter
countNumber of places the device should be moved up. Negative values indicate downwards direction.
Rückgabe
new position in the device list.

Definiert in Zeile 249 der Datei Device.cpp.

249  {
250  if (!count) return -1;
251  thistype * dev = static_cast <thistype *> (this);
252  typename listtype::base_container list;
253  deviceList.copy_to(list);
254  typename listtype::base_container::iterator pos = std::find(list.begin(),
255  list.end(),
256  dev);
257 
258  if (pos == list.end()) return -1;
259  int current_pos = pos - list.begin();
260  typename listtype::base_container::iterator newpos;
261  if (current_pos + count <= 0) {
262  newpos = list.begin();
263  count = -1;
264  } else if ((size_t)(current_pos + count) >= list.size()) {
265  newpos = list.end() - 1;
266  count = 1;
267  } else {
268  newpos = pos + count;
269  }
270  if (newpos == list.end()) --newpos;
271  if (count > 0)
272  std::rotate (pos, newpos, newpos + 1);
273  else
274  std::rotate (newpos, pos, pos + 1);
275  int retval = newpos - list.begin();
276  deviceList.swap(list);
277  return retval;
278 
279  }
static listtype deviceList
Definition: Device.h:697

◆ MoveRoutes() [1/2]

bool mutabor::BoxClass::MoveRoutes ( Box newclass)
virtual

Move routes to another device.

Definiert in Zeile 173 der Datei Box.cpp.

Benutzt mutaborGUI::IsOpen(), mutabor::reconnect(), TRACEC und UNREACHABLEC.

173  {
174  TRACEC;
175  if (!newclass->routes.empty()) {
176  UNREACHABLEC;
177  return false;
178  }
179  bool open = IsOpen();
180  // Flawfinder: ignore
181  if (open) {
182  if (!newclass->IsOpen()) newclass->Open();
183  }
184  Box thisptr(this);
185  routeListType::iterator i;
186  while ((i = routes.begin()) != routes.end()) {
187  reconnect(*i, thisptr, newclass);
188  }
189  TRACEC;
190  return true;
191  }
bool IsOpen()
Definition: Box.h:447
#define TRACEC
Definition: debug.h:300
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
bool reconnect(Route r, OutputDevice oldout, OutputDevice newout)
routeListType routes
Definition: Box.h:819
#define UNREACHABLEC
Definition: debug.h:310

◆ MoveRoutes() [2/2]

template<class T , class P , class L >
bool mutabor::CommonTypedDeviceAPI< T, P, L >::MoveRoutes ( DevicePtr newclass)
virtual

Move routes to another device.

Definiert in Zeile 176 der Datei Device.cpp.

176  {
177  // We use the slow approach here in order to allow
178  // overloading of he connection and disconnection
179  // routines.
180  TRACEC;
181  if (!newclass->routes.empty()) {
182  UNREACHABLEC;
183  return false;
184  }
185  bool open = IsOpen();
186  // Flawfinder: ignore
187  if (open) {
188  if (!newclass->IsOpen()) newclass->Open();
189  }
190  DevicePtr thisptr(static_cast<thistype *>(this));
191  routeListType::iterator i;
192  while ((i = routes.begin()) != routes.end()) {
193  reconnect(*i, thisptr, newclass);
194  }
195  TRACEC;
196  return true;
197  }
routeListType routes
Definition: Device.h:656
bool IsOpen() const
Definition: Device.h:636
#define TRACEC
Definition: debug.h:300
bool reconnect(Route r, OutputDevice oldout, OutputDevice newout)
#define UNREACHABLEC
Definition: debug.h:310

◆ MUTABOR_NAMESPACE()

MUTABOR_NAMESPACE ( mutabor  )

not for headers

Definiert in Zeile 52 der Datei Box-inlines.h.

Benutzt debug_destroy_class(), mutaborGUI::IsOpen(), mutASSERT() und TRACEC.

54  {
55  TRACEC;
56  Box self(this);
57  TRACEC;
58  if (IsOpen()) Close();
59  mutASSERT(!loopguard);
60 
61  DisconnectFromAll();
62 
63  TRACEC;
64  debug_destroy_class(this);
65  RemoveFromBoxList(this);
66  TRACEC;
67 }
bool IsOpen(WinKind kind, mutabor::Box &box)
Definition: MutChild.cpp:269
#define TRACEC
Definition: debug.h:300
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
mutASSERT(p.get_intervals==cmp)
void debug_destroy_class(void *ptr, std::string file, int l)
Definition: debug.cpp:119

◆ MutNoteOff()

int ChordNote::MutNoteOff ( )

Definiert in Zeile 953 der Datei GIS_Head.cpp.

Benutzt CNAlter, CNNoteOn, mutabor::CurrentTime, GetGisType() und GTNote.

954 {
955  if ( !(Status & CNNoteOn) )
956  return 1;
957 
958  if ( GetGisType(*Cursor) != GTNote )
959  return 1;
960 
961  if ( CurrentTime ) {
962  ((GisNote*)(*Cursor))->Duration = CurrentTime;
963  Cursor = &(*Cursor)->Next;
964  } else // note with no duration
965  {
966  // delete empty note
967  delete *Cursor;
968  *Cursor = 0;
969  // delete alter
970 
971  if ( (Status & CNAlter) && !(*AlterBegin)->Next ) {
972  delete *AlterBegin;
973  Cursor = AlterBegin;
974  *Cursor = 0;
975  Status -= CNAlter;
976  }
977 
978  LastSep = 0;
979 
980  if ( nTie ) nTie--;
981  }
982 
983  CurrentTime = 0;
984 
985  Status -= CNNoteOn;
986  Boss->NoteOn--;
987  return 0;
988 }
Definition: GIS.h:107
GisToken ** Cursor
Definition: GIS_Head.h:437
std::string * LastSep
Definition: GIS_Head.h:447
GisToken ** AlterBegin
Definition: GIS_Head.h:444
GisToken * Next
Definition: GIS.h:120
GisWriteHead * Boss
Definition: GIS_Head.h:438
char Status
Definition: GIS_Head.h:443
char NoteOn
Definition: GIS_Head.h:326
#define CNAlter
Definition: GIS_Head.h:424
Definition: GIS.h:423
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824
int nTie
Definition: GIS_Head.h:446
#define CNNoteOn
Definition: GIS_Head.h:425
mutabor::frac CurrentTime
Definition: GIS_Head.h:439

◆ MutNoteOn()

int ChordNote::MutNoteOn ( int  key,
double  pitch,
int  instrId,
int  taste,
std::string  sep 
)

Definiert in Zeile 925 der Datei GIS_Head.cpp.

Benutzt CNAlter, CNNoteOn, GMN_NO_KEY, key, Note(), GisToken::Sep und TTalter.

926 {
927  if ( Status & CNNoteOn )
928  return 1;
929 
930  if ( pitch != Pitch && key != GMN_NO_KEY ) {
931  CheckCloseAlter();
932  AlterBegin = Cursor;
933  AddGis(new GisTagBegin(TTalter, 0, new GisParaReal(pitch, ">("), "<", 0));
934  Status |= CNAlter;
935  Pitch = pitch;
936  }
937 
938  GisToken *Note = new GisNote(key, Boss->GetOctave(), Boss->GetKey(), sep);
939 
940  *Cursor = Note;
941  LastSep = &Note->Sep;
942  InstrId = instrId;
943  Taste = taste;
944  Key = key;
945  Status |= CNNoteOn;
946  Boss->NoteOn++;
947 
948  if ( nTie ) nTie++;
949 
950  return 0;
951 }
GisToken ** Cursor
Definition: GIS_Head.h:437
int Taste
Definition: GIS_Head.h:448
std::string * LastSep
Definition: GIS_Head.h:447
#define TTalter
Definition: GIS.h:84
#define GMN_NO_KEY
Definition: GIS.h:89
void CheckCloseAlter()
Definition: GIS_Head.cpp:863
GisToken ** AlterBegin
Definition: GIS_Head.h:444
int GetOctave()
Definition: GIS_Head.h:388
Definition: GIS.h:116
int Note(const std::string &name, const std::string &accedentials, int octave, const mutabor::frac &duration)
Definition: GIS.cpp:700
GisWriteHead * Boss
Definition: GIS_Head.h:438
char Status
Definition: GIS_Head.h:443
int Key
Definition: GIS_Head.h:449
char NoteOn
Definition: GIS_Head.h:326
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:855
int InstrId
Definition: GIS_Head.h:442
double Pitch
Definition: GIS_Head.h:450
std::string Sep
Definition: GIS.h:121
int GetKey()
Definition: GIS_Head.h:396
#define CNAlter
Definition: GIS_Head.h:424
Definition: GIS.h:423
#define key
int nTie
Definition: GIS_Head.h:446
#define CNNoteOn
Definition: GIS_Head.h:425

◆ Name2Key()

int Name2Key ( const std::string  name)

Definiert in Zeile 275 der Datei GIS.cpp.

Wird benutzt von GisNote::GetKey().

276 {
277  char notes[] = "c d ef g a b";
278  size_t l = name.length();
279  int i = 11;
280 
281  if ( l == 1 ) {
282  while ( i >= 0 ) {
283  if ( notes[i] == name[0] )
284  break;
285 
286  i--;
287  }
288 
289  if ( name[0] == 'h' )
290  return 11;
291  else
292  return i;
293  } else if ( l == 3 ) {
294  while ( i >= 0 ) {
295  if ( notes[i] == name[0] )
296  break;
297 
298  i--;
299  }
300 
301  if ( i != -1 ) i++;
302 
303  return i;
304  } else
305  return -1;
306 }
const char * name
Definition: TabGen.cpp:59

◆ NeedsRealTime() [1/3]

bool mutabor::NeedsRealTime ( )

Definiert in Zeile 744 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList() und TRACE.

Wird benutzt von mutaborGUI::MutFrame::CmDoActivate() und mutabor::ScopedOutputDevice::operator=().

745  {
746  TRACE;
747  const OutputDeviceList& listo = OutputDeviceClass::GetDeviceList();
748  for (OutputDeviceList::const_iterator Out = listo.begin();
749  Out != listo.end(); Out++)
750  if ( (*Out)->NeedsRealTime() ) {
751  TRACE;
752  return true;
753  }
754 
755  const InputDeviceList& listi = InputDeviceClass::GetDeviceList();
756  for (InputDeviceList::const_iterator In = listi.begin();
757  In != listi.end(); In++)
758  if ( (*In)->NeedsRealTime() ) {
759  TRACE;
760  return true;
761  }
762 
763  TRACE;
764  return false;
765  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:841
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1020
#define TRACE
Definition: debug.h:299

◆ NeedsRealTime() [2/3]

virtual bool mutabor::OutputDeviceClass::NeedsRealTime ( )
inlinevirtual

Erneute Implementation in mutabor::OutputMidiPort.

Definiert in Zeile 944 der Datei Device.h.

944  {
945  return false;
946  }

◆ NeedsRealTime() [3/3]

virtual bool mutabor::InputDeviceClass::NeedsRealTime ( )
inlinevirtual

Erneute Implementation in mutabor::InputMidiPort.

Definiert in Zeile 1220 der Datei Device.h.

1220  {
1221  return false;
1222  }

◆ NextSequenz()

int NextSequenz ( )

Definiert in Zeile 691 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2 und TagMode.

Wird benutzt von DoParse() und GisComma::ToString().

692 {
693  DEBUGLOG2(gmnfile,(", "));
694 
695  if ( TagMode ) BuildTag();
696 
697  return 0;
698 }
char TagMode
Definition: GIS.cpp:109
int BuildTag()
Definition: GIS.cpp:530
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ NO_DELTA()

static boost::chrono::microseconds mutabor::InputDeviceClass::NO_DELTA ( )
inlinestatic

◆ NoInputDevice()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::NoInputDevice::NoInputDevice ( const thistype r)
inline

Definiert in Zeile 140 der Datei Route.h.

141  {
142  route = const_cast<thistype *>(r);
143  }
TRouteClass thistype
Definition: Route.h:114

◆ NoOutputDevice()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::NoOutputDevice::NoOutputDevice ( const thistype r)
inline

Definiert in Zeile 131 der Datei Route.h.

131  :
132  invalid_argument(_mutN("No such output device")) {
133  route = const_cast<thistype *>(r);
134  }
#define _mutN(x)
Definition: Defs.h:137
TRouteClass thistype
Definition: Route.h:114

◆ Note()

int Note ( const std::string name,
const std::string accedentials,
int  octave,
const mutabor::frac duration 
)

Definiert in Zeile 700 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, GisNote::GisNote(), GisToken::Next, octave, GisToken::Sep, mutabor::str() und TagMode.

Wird benutzt von ChordNote::MutNoteOn(), ReadNote() und GisComma::ToString().

704 {
705  DEBUGLOG2(gmnfile,("%s%s%d*%s: Note '%s' %s Oktave %d, Duration: %s "),
706  name.c_str(),
707  accedentials.c_str(),
708  octave,
709  str(duration).c_str(),
710  name.c_str(),
711  accedentials.c_str(),
712  octave,
713  str(duration).c_str());
714 
715  if ( TagMode ) BuildTag();
716 
717  GisNote *Note = new GisNote(name, accedentials, octave, duration, Sep);
718 
719  *Current = Note;
720 
721  Current = &(Note->Next);
722 
723  return 0;
724 }
char TagMode
Definition: GIS.cpp:109
std::string str(T obj)
Definition: Defs.h:131
const char * name
Definition: TabGen.cpp:59
std::string Sep
Definition: GSP.cpp:39
GisToken * Next
Definition: GIS.h:120
int Note(const std::string &name, const std::string &accedentials, int octave, const mutabor::frac &duration)
Definition: GIS.cpp:700
int BuildTag()
Definition: GIS.cpp:530
static int octave
Definition: GSP.cpp:66
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295
Definition: GIS.h:423
static std::string accedentials
Definition: GSP.cpp:68

◆ NoteOff() [1/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::NoteOff ( int  key,
int  velocity,
size_t  make_unique 
)
inline

Definiert in Zeile 194 der Datei Route.h.

196  {
197  if (Active) {
198  box->DeleteNote(key,
199  make_unique,
200  session_id);
201  }
202  if (Out) {
203  Out->NoteOff(box,
204  key,
205  velocity,
206  this,
207  make_unique,
208  false);
209  }
210  }
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:476
OutputDevice Out
Definition: Route.h:466
#define key

◆ NoteOff() [2/3]

void mutabor::OutputDeviceClass::NoteOff ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
bool  is_note_on 
)
inline

Definiert in Zeile 862 der Datei Device.h.

Wird benutzt von myDevice::Pause(), mutabor::InputGis::Proceed(), CommonMidiOutputTest::testNoteOnOff() und OutputMidiFileTest::testNoteOnOff().

867  {
868  ScopedLock<OutputDeviceClass> lock(*this);
869  do_NoteOff(box,taste,velo,r,id,is_note_on);
870  }
virtual void do_NoteOff(Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)=0
mutabor::Box box

◆ NoteOff() [3/3]

void mutabor::InputDeviceClass::NoteOff ( Route R,
int  key,
int  velocity,
size_t  make_unique 
)
inline

Definiert in Zeile 1292 der Datei Device.h.

Wird benutzt von CommonMidiInputTest::testGlobalPanic() und CommonMidiInputTest::testPanic().

1295  {
1296  ScopedLock<InputDeviceClass> lock(*this);
1297  DoNoteOff(R, key, velocity, make_unique);
1298  }
void DoNoteOff(Route &R, int key, int velocity, size_t make_unique)
Definition: Device.h:1300
#define key

◆ NoteOn() [1/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::NoteOn ( int  key,
int  velocity,
size_t  make_unique,
const ChannelData input_channel_data,
void *  userdata 
)
inline

Definiert in Zeile 174 der Datei Route.h.

178  {
179  if (Active) {
180  // global C part
181  box->AddNote(key, make_unique, session_id, userdata);
182  DEBUGLOG (routing, "(key = %d, channel = %lu, id = %lu)" ,
183  key,
184  (unsigned long)get_session_id(),
185  (unsigned long)make_unique);
186  }
187  if (Out) {
188  Out->NoteOn(box,
189  key, velocity, this, make_unique,
190  input_channel_data);
191  }
192  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:476
size_t get_session_id() const
Definition: Route.h:403
OutputDevice Out
Definition: Route.h:466
#define key

◆ NoteOn() [2/3]

void mutabor::OutputDeviceClass::NoteOn ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
const ChannelData input_channel_data 
)
inline

Definiert in Zeile 852 der Datei Device.h.

Wird benutzt von myDevice::Pause(), mutabor::InputGis::Proceed(), CommonMidiOutputTest::testMoreNotesThanChannels(), CommonMidiOutputTest::testNoteOnOff() und OutputMidiFileTest::testNoteOnOff().

857  {
858  ScopedLock<OutputDeviceClass> lock(*this);
859  do_NoteOn(box,taste,velo,r,id,input_channel_data);
860 
861  }
virtual void do_NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)=0
Really Send the beginning of a sounding note.
mutabor::Box box

◆ NoteOn() [3/3]

void mutabor::InputDeviceClass::NoteOn ( Route R,
int  key,
int  velocity,
size_t  make_unique,
const ChannelData input_channel_data,
void *  userdata 
)
inline

Definiert in Zeile 1266 der Datei Device.h.

Benutzt DEBUGLOG.

Wird benutzt von CommonMidiInputTest::testGlobalPanic() und CommonMidiInputTest::testPanic().

1269  {
1270  ScopedLock<InputDeviceClass> lock(*this);
1271  DEBUGLOG(routing,("(key = %d, channel = %lu, id = %lu)"),
1272  key,
1273  (unsigned long)R->get_session_id(),
1274  (unsigned long)make_unique);
1275 
1277  velocity,
1278  make_unique,
1279  R,
1280  this,
1281  input_channel_data,
1282  userdata);
1283  if (R) {
1284  R->NoteOn(key,
1285  velocity,
1286  make_unique,
1287  input_channel_data,
1288  userdata);
1289  }
1290  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
void * userdata
Definition: Device.h:679
current_keys_type current_keys
Definition: Device.h:1337
void add(int key, int velocity, int unique_id, Route &R, InputDevice i, const ChannelData &c, void *userdata)
Definition: Device.h:1069
#define key

◆ nRoutes()

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
size_t mutabor::CommonTypedDeviceAPI< T, P, L >::nRoutes ( )
inline

Definiert in Zeile 744 der Datei Device.h.

744 { return routes.size(); };
routeListType routes
Definition: Device.h:656

◆ Open() [1/3]

bool mutabor::BoxClass::Open ( )
inline

Definiert in Zeile 431 der Datei Box.h.

431  {
432  BoxLock lock(this);
433  if (!open)
434  open = DoOpen();
435  return open;
436  }
virtual bool DoOpen()
Definition: Box.cpp:401

◆ Open() [2/3]

virtual bool mutabor::Device::Open ( )
pure virtual

◆ Open() [3/3]

bool mutabor::OutputDeviceClass::Open ( )
inlinevirtual

◆ OpenAll()

bool mutabor::OpenAll ( int  mode)

Definiert in Zeile 478 der Datei Box.cpp.

Benutzt _mut, mutabor::BoxClass::CloseAll(), mutabor::BoxClass::GetBoxList(), mutabor::InOpen(), mutabor::BoxClass_CallOpen::ok, mutabor::OpenAllBoxes, mutabor::OpenAllInDevices, mutabor::OpenAllOutDevices, mutabor::OutClose() und mutabor::OutOpen().

Wird benutzt von mutabor::BoxClass::ActivateAll() und mutabor::InputDeviceClass::BatchPlay().

478  {
479  BoxClass_CallOpen callopen;
480  bool openout = mode & OpenAllOutDevices;
481  bool openboxes = mode & OpenAllBoxes;
482  bool openin = mode & OpenAllInDevices;
483  if (openout)
484  if (!mutabor::OutOpen())
485  return false;
486 
487  if (openboxes) {
488  BoxListType & boxList = const_cast<BoxListType &>(BoxClass::GetBoxList());
489  std::for_each(boxList.begin(),boxList.end(),callopen);
490  if (!callopen.ok) {
491  BoxClass::CloseAll();
492  if (openout)
493  OutClose();
494  return false;
495  }
496  }
497 
498  if (openin) {
499  if (!InOpen() ) {
500  if (openboxes)
501  BoxClass::CloseAll();
502  if (openout)
503  OutClose();
504  return false;
505  }
506  }
507 
508 
509 #if 0
510  if ( !ok ) {
511  wxMessageBox(Fmeldung, _mut("Activation error"), wxOK | wxICON_ASTERISK );
512 
513  return false;
514  }
515 #endif
516  return true;
517  }
void OutClose()
Definition: Device.cpp:698
std::vector< Box > BoxListType
Definition: Box.h:131
#define _mut
Definition: Defs.h:138
bool InOpen()
Definition: Device.cpp:714
bool OutOpen()
Definition: Device.cpp:680

◆ OpenFile()

int OpenFile ( const std::string Name)

Definiert in Zeile 53 der Datei GSP_File.cpp.

Benutzt bad, File, in und p().

Wird benutzt von GspParse().

54 {
55  /* tell boost that we are using UTF-8 file names */
56  boost::filesystem::detail::utf8_codecvt_facet utf8;
57  boost::filesystem::path p;
58  p.assign(Name, utf8);
59 
60 // File = new STD_PRE::ifstream(Name, STD_PRE::ios::in/*, 0/*int = filebuf::openprot*/);
61  File = new boost::filesystem::ifstream(p, std::ios::in);
62  if (!File ) return -1;
63  if (!File->is_open()) return -2;
64  if (File->bad()) return -3;
65  if (File->fail()) return -4;
66  return 0;
67 #if 0
68  initialized = false;
69  return bad=(!(File->Open()));
70  return mutStreamBad(*File);
71 #endif
72 }
mutabor::InputMidiFile * in
boost::filesystem::ifstream * File
Definition: GSP_File.cpp:40
static int bad
Definition: GSP_File.cpp:43
string_parser p("\onstant tone system\0")

◆ operator const thistype &()

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
mutabor::CommonTypedDeviceAPI< T, P, L >::operator const thistype & ( ) const
inline

Definiert in Zeile 773 der Datei Device.h.

773  {
774  return *(static_cast <const thistype *>(this));
775  }

◆ operator std::string() [1/6]

template<class I , class O , class B >
mutabor::TRouteClass< I, O, B >::operator std::string ( ) const
virtual

Definiert in Zeile 307 der Datei Route.cpp.

308  {
309  return boost::str(boost::format("\
310 TRouteClass<I,O,B>:\n\
311  userdata = %p\n\
312  Out = %p\n\
313  In = %p\n\
314  fileid = %d\n\
315  sess.id = %lu\n\
316  inputid = %d\n\
317  outputid = %d\n\
318  Box = %p\n\
319  Type = %d\n\
320  IFrom = %d\n\
321  ITo = %d\n\
322  OFrom = %d\n\
323  OTo = %d\n\
324  flags: Active:%d, ONoDrum:%d\n\
325 ")
326  % (void *)userdata
327  % (void*)Out.get()
328  % (void*)In.get()
329  % routefile_id
330  % (unsigned long)session_id()
331  % inputid
332  % outputid
333  % box.get()
334  % Type
335  % IFrom
336  % ITo
337  % OFrom
338  % OTo
339  % Active
340  % ONoDrum);
341  }
InputDevice In
Definition: Route.h:467
RouteType Type
Definition: Route.h:483
std::string str(T obj)
Definition: Defs.h:131
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:476
OutputDevice Out
Definition: Route.h:466

◆ operator std::string() [2/6]

mutabor::Device::operator std::string ( ) const
virtual

Erneute Implementation in mutabor::InputDeviceClass, mutabor::InputMidiFile, mutabor::OutputDeviceClass, mutabor::OutputMidiFile, mutabor::CommonTypedDeviceAPI< T, P, L >, mutabor::CommonTypedDeviceAPI< OutputDeviceClass >, mutabor::CommonTypedDeviceAPI< InputDeviceClass >, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 91 der Datei Device.cpp.

Benutzt mutabor::NoBox, mutabor::str() und string.

91  {
92  std::string routeString;
93  for (routeListType::const_iterator r = routes.begin();
94  r != routes.end(); r++)
95  routeString += boost::str(boost::format(" %d:(%d->%d->%d)")
96  % ((*r)->get_routefile_id())
97  % ((*r)->GetDeviceId(InputDevice()))
98  % ((*r)->GetBox()?(*r)->GetBox()->get_routefile_id():NoBox)
99  % ((*r)->GetDeviceId(OutputDevice())));
100 
101 
102  return boost::str(boost::format("\nDevice:\n\
103  session_id = %lu\n\
104  routefile_id = %d\n\
105  userdata = %p\n\
106  Name = '%s'\n\
107  Flags: dirty:%d, isOpen:%d\n \
108  Routes: %s\n")
109  % (unsigned long)session_id()
110  % routefile_id
111  % userdata
112  % Name
113  % dirty
114  % isOpen
115  % routeString);
116  }
#define string
routeListType routes
Definition: Device.h:656
std::string str(T obj)
Definition: Defs.h:131
idtype< Device > session_id
Id used during runtime;.
Definition: Device.h:650
void * userdata
Definition: Device.h:679
std::string Name
Definition: Device.h:652
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:839
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1018
int routefile_id
Definition: Device.h:651

◆ operator std::string() [3/6]

mutabor::BoxClass::operator std::string ( ) const

Definiert in Zeile 57 der Datei Box.cpp.

Benutzt mutabor::str() und string.

57  {
58  std::string routeString;
59  for (routeListType::const_iterator r = routes.begin();
60  r != routes.end(); r++)
61  routeString += boost::str(boost::format((" %d:(%d->%d->%d)"))
62  % (*r)->get_routefile_id()
63  % (*r)->GetDeviceId(InputDevice())
64  % (*r)->GetBoxId()
65  %(*r)->GetDeviceId(OutputDevice()));
66 
67 
68  return boost::str(boost::format("\nBox:\n\
69  session_id = %lu\n\
70  routefile_id = %d\n\
71  routes: %s\n") % (unsigned long)session_id()
72  % routefile_id
73  % routeString.c_str());
74  }
#define string
std::string str(T obj)
Definition: Defs.h:131
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:839
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1018
idtype< BoxClass > session_id
Definition: Box.h:817
routeListType routes
Definition: Box.h:819
int routefile_id
Definition: Box.h:818

◆ operator std::string() [4/6]

template<class T , class P , class L >
mutabor::CommonTypedDeviceAPI< T, P, L >::operator std::string ( ) const
virtual

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputDeviceClass, mutabor::InputMidiFile, mutabor::OutputDeviceClass, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 283 der Datei Device.cpp.

283  {
284  return Device::operator std::string()
285  + boost::str(boost::format("\
286 CommonTypedDeviceAPI:\n\
287  ptrct = %d\n\
288 ") % (int)intrusive_ptr_get_refcount(this));
289  }
#define string
std::string str(T obj)
Definition: Defs.h:131
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)

◆ operator std::string() [5/6]

mutabor::OutputDeviceClass::operator std::string ( ) const
virtual

Erneute Implementation von mutabor::CommonTypedDeviceAPI< OutputDeviceClass >.

Erneute Implementation in mutabor::OutputMidiFile, mutabor::OutputMidiPort, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 340 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::last_was_stop und string.

340  {
341  return CommonTypedDeviceAPI<OutputDeviceClass>::
342  operator std::string() + "\
343 OutputDeviceClass:\n\
344  no data.\n\
345 ";
346 
347  }
#define string

◆ operator std::string() [6/6]

mutabor::InputDeviceClass::operator std::string ( ) const
virtual

Erneute Implementation von mutabor::CommonTypedDeviceAPI< InputDeviceClass >.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis und mutabor::CommonFileInputDevice.

Definiert in Zeile 506 der Datei Device.cpp.

Benutzt mutabor::DeviceFactory::factories, mutabor::str() und string.

506  {
507  return (CommonTypedDeviceAPI<InputDeviceClass>::
508  operator std::string()) + boost::str(boost::format("\
509 InputDeviceClass:\n\
510  Mode = %d\n\
511 ") % Mode);
512 
513  }
#define string
enum MutaborModeType Mode
Definition: Device.h:655
std::string str(T obj)
Definition: Defs.h:131

◆ operator thistype &()

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
mutabor::CommonTypedDeviceAPI< T, P, L >::operator thistype & ( )
inline

Definiert in Zeile 777 der Datei Device.h.

777  {
778  return *(static_cast <thistype *>(this));
779  }

◆ operator()()

uint8_t mutabor::InputDeviceClass::current_keys_type::hash_type::operator() ( const entry val) const
inline

Definiert in Zeile 1056 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::entry::key, mutabor::InputDeviceClass::current_keys_type::entry::route und mutabor::InputDeviceClass::current_keys_type::entry::unique_id.

1056  {
1057  size_t seed = 0;
1058  boost::hash_combine(seed, val.key);
1059  boost::hash_combine(seed, val.unique_id);
1060  boost::hash_combine(seed, val.route.get());
1061  return seed & 0xFF;
1062  }

◆ operator=() [1/8]

ScopedRoute& mutabor::ScopedRoute::operator= ( element_type *  rhs)
inline

Definiert in Zeile 755 der Datei Route.h.

755  {
756  (*(static_cast<Route *>(this))) = rhs;
757  return *this;
758  }
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:548

◆ operator=() [2/8]

ScopedRoute& mutabor::ScopedRoute::operator= ( const Route rhs)
inline

Definiert in Zeile 759 der Datei Route.h.

Benutzt mutabor::DevTypeName und string.

759  {
760  (*(static_cast<Route *>(this))) = rhs;
761  return *this;
762  }
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:548

◆ operator=() [3/8]

ScopedBox& mutabor::ScopedBox::operator= ( BoxClass rhs)
inline

Definiert in Zeile 991 der Datei Box.h.

991  {
992  (*(static_cast<Box *>(this))) = rhs;
993  return *this;
994  }
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129

◆ operator=() [4/8]

ScopedBox& mutabor::ScopedBox::operator= ( const Box rhs)
inline

Definiert in Zeile 995 der Datei Box.h.

995  {
996  (*(static_cast<Box *>(this))) = rhs;
997  return *this;
998  }
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129

◆ operator=() [5/8]

ScopedInputDevice& mutabor::ScopedInputDevice::operator= ( InputDeviceClass rhs)
inline

Definiert in Zeile 1536 der Datei Device.h.

1536  {
1537  (*(static_cast<InputDevice *>(this))) = rhs;
1538  return *this;
1539  }
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1018

◆ operator=() [6/8]

ScopedInputDevice& mutabor::ScopedInputDevice::operator= ( const InputDevice rhs)
inline

Definiert in Zeile 1540 der Datei Device.h.

1540  {
1541  (*(static_cast<InputDevice *>(this))) = rhs;
1542  return *this;
1543  }
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1018

◆ operator=() [7/8]

ScopedOutputDevice& mutabor::ScopedOutputDevice::operator= ( OutputDeviceClass rhs)
inline

Definiert in Zeile 1552 der Datei Device.h.

1552  {
1553  (*(static_cast<OutputDevice *>(this))) = rhs;
1554  return *this;
1555  }
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:839

◆ operator=() [8/8]

ScopedOutputDevice& mutabor::ScopedOutputDevice::operator= ( const OutputDevice rhs)
inline

Definiert in Zeile 1556 der Datei Device.h.

Benutzt mutabor::InClose(), mutabor::InOpen(), mutabor::NeedsRealTime(), mutabor::OutAddTime(), mutabor::OutClose() und mutabor::OutOpen().

1556  {
1557  (*(static_cast<OutputDevice *>(this))) = rhs;
1558  return *this;
1559  }
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:839

◆ operator==() [1/2]

bool mutabor::BoxClass::tone::operator== ( const tone t) const
inline

Definiert in Zeile 212 der Datei Box.h.

212  {
213  return active == t.active && value == t.value;
214  }
MUTABOR_EXTERN_C_END const char * t
Definition: debug.h:323

◆ operator==() [2/2]

bool mutabor::InputDeviceClass::current_keys_type::entry::operator== ( const entry e) const
inline

◆ OutAddTime()

void mutabor::OutAddTime ( frac  time)

Definiert in Zeile 706 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList().

Wird benutzt von main() und mutabor::ScopedOutputDevice::operator=().

707  {
708  const OutputDeviceList& list = OutputDeviceClass::GetDeviceList();
709  for (OutputDeviceList::const_iterator Out = list.begin();
710  Out != list.end(); Out++)
711  (*Out)->AddTime(time);
712  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:841

◆ OutClose()

void mutabor::OutClose ( )

Definiert in Zeile 698 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList().

Wird benutzt von mutabor::InputDeviceClass::BatchPlay(), main(), mutabor::OpenAll(), mutabor::ScopedOutputDevice::operator=() und mutabor::BoxClass::StopAll().

699  {
700  const OutputDeviceList& list = OutputDeviceClass::GetDeviceList();
701  for (OutputDeviceList::const_iterator Out = list.begin();
702  Out != list.end(); Out++)
703  (*Out)->Close();
704  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:841

◆ OutOpen()

bool mutabor::OutOpen ( )

Definiert in Zeile 680 der Datei Device.cpp.

Benutzt DEBUGLOG2 und mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList().

Wird benutzt von main(), mutabor::OpenAll() und mutabor::ScopedOutputDevice::operator=().

681  {
682  const OutputDeviceList& list = OutputDeviceClass::GetDeviceList();
683  DEBUGLOG2(midiio,("count: %d"),(int)list.size());
684  for (OutputDeviceList::const_iterator Out = list.begin();
685  Out != list.end(); Out++)
686  if ( !(*Out)->Open() ) {
687  for (OutputDeviceList::const_iterator Out1
688  = list.begin();
689  Out1 != Out; Out1++)
690  (*Out1)->Close();
691 
692  return false;
693  }
694 
695  return true;
696  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:841
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ OutputAvoidDrumChannel() [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel ( ) const
inline

◆ OutputAvoidDrumChannel() [2/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel ( bool  avoid)
inline

Definiert in Zeile 386 der Datei Route.h.

386  {
387  ONoDrum = avoid;
388  }

◆ OutputDeviceClass() [1/2]

mutabor::OutputDeviceClass::OutputDeviceClass ( )
inlineprotected

Definiert in Zeile 964 der Datei Device.h.

964 :CommonTypedDeviceAPI<OutputDeviceClass>() {}

◆ OutputDeviceClass() [2/2]

mutabor::OutputDeviceClass::OutputDeviceClass ( const std::string name,
int  id = -1 
)
inlineprotected

Definiert in Zeile 966 der Datei Device.h.

Benutzt box, p() und route.

967  :
968  CommonTypedDeviceAPI<OutputDeviceClass>(name, id) {}
const char * name
Definition: TabGen.cpp:59

◆ outputs_handle_event()

void mutabor::InputDeviceClass::outputs_handle_event ( event  e)
inlineprotected

Definiert in Zeile 1348 der Datei Device.h.

1348  {
1349  OutputDeviceSet set;
1350  for (routeListType::iterator i=routes.begin();
1351  i != routes.end(); ++i) {
1352  OutputDevice o = (*i)->GetOutputDevice();
1353  if (o)
1354  set.insert(o);
1355  }
1356  for (OutputDeviceSet::iterator i = set.begin(); i != set.end(); ++i) {
1357  (*i) -> handle_event (e);
1358  }
1359 
1360  }
routeListType routes
Definition: Device.h:656
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:839
std::set< OutputDevice > OutputDeviceSet
Definition: Device.h:842

◆ Panic() [1/10]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::Panic ( int  type)
inline

Definiert in Zeile 254 der Datei Route.h.

254  {
255  if (box)
256  box-> Panic(this,type);
257  if (Out)
258  Out -> Quiet(this, type);
259  }
void Panic(int type)
Definition: Route.h:254
OutputDevice Out
Definition: Route.h:466

◆ Panic() [2/10]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::Panic ( int  type,
size_t  unique_id 
)
inline

Definiert in Zeile 261 der Datei Route.h.

261  {
262  if (box)
263  box-> Panic(this, type, unique_id);
264  if (Out)
265  Out -> Quiet(this, type, unique_id);
266  }
void Panic(int type)
Definition: Route.h:254
OutputDevice Out
Definition: Route.h:466

◆ Panic() [3/10]

void mutabor::BoxClass::Panic ( int  type)
virtual

reset the device if requested

Definiert in Zeile 386 der Datei Box.cpp.

Benutzt box, mutabor::hidden::mutabor_reset_keys(), mutASSERT() und mutUnused.

386  {
387  mutUnused(type);
388  BoxLock lock(this);
389  mutASSERT(open);
391  }
#define mutUnused(expr)
Definition: Defs.h:106
mutabor_box_type * box
Definition: Box.h:816
mutASSERT(p.get_intervals==cmp)
void mutabor_reset_keys(mutabor_box_type *box)
Definition: box.cpp:96

◆ Panic() [4/10]

void mutabor::BoxClass::Panic ( Route  r,
int  type 
)
virtual

Definiert in Zeile 356 der Datei Box.cpp.

Benutzt box, mutabor_note_type::channel, DEBUGLOG, mutabor_note_type::id, key, mutabor_find_key_in_box(), mutASSERT(), mutUnused, mutabor_note_type::next und mutabor_note_type::number.

357  {
358  mutUnused(r);
359  mutUnused(type);
360 #ifdef DEBUG
361  BoxLock lock(this);
362 
363  size_t channel = r -> get_session_id();
365  size_t index = 0;
366  while ((key = hidden::mutabor_find_key_in_box(box,
367  index))
368  != NULL) {
369  if (key -> channel == channel)
370  break;
371  index = key->next;
372  }
373 
374  if (key != NULL) {
375  DEBUGLOG (routing, "(key = %d, channel = %lu, id = %lu)" ,
376  key->number,
377  key->channel,
378  key->id);
379 
380  }
381  mutASSERT(key == NULL);
382 #endif
383 
384  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
size_t channel
Definition: box.h:75
#define mutUnused(expr)
Definition: Defs.h:106
int number
Definition: box.h:74
mutabor_box_type * box
Definition: Box.h:816
mutASSERT(p.get_intervals==cmp)
size_t id
unique Id if the input device suports it
Definition: box.h:76
mutabor_note_type * mutabor_find_key_in_box(mutabor_box_type *box, size_t index)
Definition: box.h:208
size_t get_session_id() const
Definition: Box.h:256
linked list containing key information for incoming keys or notes.
Definition: box.h:73
size_t next
Definition: box.h:78
#define key

◆ Panic() [5/10]

void mutabor::BoxClass::Panic ( Route  r,
int  type,
size_t  unique_id 
)
virtual

Definiert in Zeile 331 der Datei Box.cpp.

Benutzt box, key, mutabor_find_key_in_box(), mutASSERT(), mutUnused und mutabor_note_type::next.

332  {
333  mutUnused(r);
334  mutUnused(type);
335  mutUnused(unique_id);
336 #ifdef DEBUG
337  BoxLock lock(this);
338 
339  size_t channel = r -> get_session_id();
341  size_t index = 0;
342  while ((key = hidden::mutabor_find_key_in_box(box,
343  index))
344  != NULL) {
345  if (key -> channel == channel
346  && key -> id == unique_id)
347  break;
348  index = key->next;
349  }
350 
351  mutASSERT(key == NULL);
352 #endif
353 
354  }
#define mutUnused(expr)
Definition: Defs.h:106
mutabor_box_type * box
Definition: Box.h:816
mutASSERT(p.get_intervals==cmp)
mutabor_note_type * mutabor_find_key_in_box(mutabor_box_type *box, size_t index)
Definition: box.h:208
size_t get_session_id() const
Definition: Box.h:256
linked list containing key information for incoming keys or notes.
Definition: box.h:73
size_t next
Definition: box.h:78
#define key

◆ Panic() [6/10]

virtual void mutabor::Device::Panic ( int  type)
pure virtual

reset the device if requested

Implementiert in mutabor::InputDeviceClass und mutabor::OutputDeviceClass.

◆ Panic() [7/10]

void mutabor::OutputDeviceClass::Panic ( int  type)
inlinevirtual

reset the device if requested

Implementiert mutabor::Device.

Definiert in Zeile 928 der Datei Device.h.

Wird benutzt von mutabor::InputGis::Stop() und mutabor::CommonFileInputDevice::ThreadPlay().

928  {
929  ScopedLock<OutputDeviceClass> lock(*this);
930  do_Panic(type);
931  }
virtual void do_Panic(int mutUNUSED(type))
Definition: Device.h:1009

◆ Panic() [8/10]

void mutabor::Panic ( int  type)

Definiert in Zeile 1092 der Datei Box.cpp.

Benutzt mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList() und mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList().

Wird benutzt von mutabor::BoxClass::ClearBoxList(), mutabor::InputMidiPort::Close(), mutaborGUI::MutFrame::CmPanic(), mutabor::BoxClass::GetOrCreateBox(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::Panic(), mutabor::CommonMidiInput< InputDeviceClass >::ProceedRoute(), mutabor::InputDeviceClass::ResumeKeys(), mutabor::InputMidiPort::Stop(), mutabor::InputDeviceClass::Stop(), CommonMidiInputTest::testGlobalPanic() und mutabor::Device::~Device().

1092  {
1093  dopanic_type dopanic(type);
1094 
1095  const InputDeviceList & inlist = InputDeviceClass::GetDeviceList();
1096  std::for_each(inlist.begin(),inlist.end(),dopanic);
1097 
1098  const BoxListType & boxlist = BoxClass::GetBoxList();
1099  std::for_each(boxlist.begin(),boxlist.end(),dopanic);
1100 
1101  const OutputDeviceList & outlist = OutputDeviceClass::GetDeviceList();
1102  std::for_each(outlist.begin(),outlist.end(),dopanic);
1103  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:841
std::vector< Box > BoxListType
Definition: Box.h:131
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1020

◆ Panic() [9/10]

void mutabor::InputDeviceClass::Panic ( int  type)
virtual

reset the device if requested

Implementiert mutabor::Device.

Definiert in Zeile 429 der Datei Device.cpp.

Wird benutzt von CommonMidiInputTest::testPanic().

429  {
430  ScopedLock<thistype> lock(*this);
431  DoSilenceKeys(true);
432 
433  for (routeListType::iterator j = routes.begin(); j!= routes.end(); j++) {
434  (*j)->Panic(type);
435  }
436  }
routeListType routes
Definition: Device.h:656
void DoSilenceKeys(bool remove)
Definition: Device.cpp:351

◆ Panic() [10/10]

void mutabor::InputDeviceClass::Panic ( int  type,
size_t  unique_id 
)

Definiert in Zeile 398 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::current_keys_type::add(), mutabor::InputDeviceClass::current_keys_type::begin(), mutabor::midi::CONTROLLER_OFF, mutabor::InputDeviceClass::current_keys_type::end(), mutabor::midi::get_holds() und mutabor::InputDeviceClass::current_keys_type::remove().

399  {
400  ScopedLock<thistype> lock(*this);
401 
402  current_keys_type tmp;
404 
405  for (i = current_keys.begin();i!= current_keys.end();i++) {
406  if (i->unique_id != unique_id) continue;
407  tmp.add(*i);
408  }
409  while ((i = tmp.begin())!= tmp.end()) {
410  for (const int * j = midi::get_holds();
411  *j >= 0; j++) {
412  i->route->Controller(*j,
414  i->unique_id);
415  }
416  // Maps have constant entries
417  DoNoteOff(const_cast<Route &>(i->route),
418  i->key,i->velocity,i->unique_id);
419  tmp.remove(i);
420  }
421 
422  InputDevice self = this;
423  for (routeListType::iterator j = routes.begin(); j!= routes.end(); j++) {
424  (*j)->Panic(type,unique_id);
425 
426  }
427  }
routeListType routes
Definition: Device.h:656
void DoNoteOff(Route &R, int key, int velocity, size_t make_unique)
Definition: Device.h:1300
current_keys_type current_keys
Definition: Device.h:1337
virtual void Panic(int type)=0
reset the device if requested
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1018
const int * get_holds()
Return a list of hold controllers.
Definition: MidiKern.h:430

◆ Pause() [1/2]

virtual void mutabor::Device::Pause ( )
inlinevirtual

Pause playback or recording of the device.

Erneute Implementation in mutabor::InputDeviceClass, mutabor::InputMidiPort, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, myDevice, myDevice und testCommonFileDeviceTimer.

Definiert in Zeile 571 der Datei Device.h.

Wird benutzt von mutabor::CommonFileInputDevice::~CommonFileInputDevice().

571 {}

◆ Pause() [2/2]

virtual void mutabor::InputDeviceClass::Pause ( )
inlinevirtual

Pause playback or recording of the device.

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputMidiPort, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, myDevice, myDevice und testCommonFileDeviceTimer.

Definiert in Zeile 1213 der Datei Device.h.

Benutzt mutabor::DevicePause.

1213  {
1214  Mode = DevicePause;
1215  }
enum MutaborModeType Mode
Definition: Device.h:655

◆ PauseAll()

static void mutabor::InputDeviceClass::PauseAll ( )
inlinestatic

Pause all input devices.

Definiert in Zeile 1177 der Datei Device.h.

Wird benutzt von mutabor::InputMidiPort::Proceed().

1177  {
1178  for (listtype::iterator i = deviceList.begin();
1179  i != deviceList.end(); ++i) {
1180  (*i)->Pause();
1181  }
1182  last_was_stop = false;
1183  }
static bool last_was_stop
Definition: Device.h:1338

◆ Play() [1/2]

virtual void mutabor::Device::Play ( )
inlinevirtual

◆ Play() [2/2]

virtual void mutabor::InputDeviceClass::Play ( )
inlinevirtual

Command the device to play music.

This function starts playing the music of the device at the curren position.

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, testCommonFileDeviceTimer, myDevice, myDevice und testCommonFileDeviceTimer.

Definiert in Zeile 1143 der Datei Device.h.

Benutzt mutabor::DevicePause, mutabor::DevicePlay und mutabor::DeviceStop.

1143  {
1144  if (Mode == DeviceStop || Mode == DevicePause)
1145  Mode = DevicePlay;
1146  }
enum MutaborModeType Mode
Definition: Device.h:655

◆ PrepareNextEvent()

virtual boost::chrono::microseconds mutabor::InputDeviceClass::PrepareNextEvent ( )
inlinevirtual

Go on to the next event.

This function must be provided by the device. It is asked to prepare the next event and return the time to wait in microseconds from the start of the piece. Though the timer has only milliseconds resolution, the errors will sum up so that we need a much higher resolution, here.

Here, we use the measure that is used in the SMF standard. It has been designed to reduce the deviation of a 4 minutes piece at 120 bpm to 500μs. If it were 500ms it would be unusable.

Rückgabe
uint_fast64_t Absolute temporal position of the next event in the piece in μs.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputGis, testCommonFileDeviceTimer und testCommonFileDeviceTimer.

Definiert in Zeile 1243 der Datei Device.h.

1243 { return NO_DELTA(); }
static boost::chrono::microseconds NO_DELTA()
Definition: Device.h:1254

◆ ProceedGis()

int GisWriteHead::ProceedGis ( GisToken token,
char  turn = 0 
)

cout << "[" << Id << "," << (int)turn << "]"; token->Echo();

cout << " ";

Definiert in Zeile 1248 der Datei GIS_Head.cpp.

Benutzt AddTag(), GisToken::Copy(), TagListData::Data, EndTag(), GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, TagListData::data::i, GisToken::Sep, ChordNote::SetNoteOn(), TTkey, TToct, GisToken::Type(), WTAG und WTAGEND.

Wird benutzt von GisWriteHeadGis().

1249 {
1252  int Res = 0;
1253  int Id;
1254 
1255  if ( turn == 1 ) return 0;
1256 
1257  CommaAtEnd = 0;
1258 
1259  if ( !turn ) // this token first time
1260  {
1261  Res = CloseCurrentToken(); // close the current Token
1262 
1263  if ( Res ) return Res;
1264 
1265  switch ( token->Type() )
1266  {
1267 
1268  case GTNull:
1269  return 3; // impossible
1270 
1271  case GTUnknown:
1272  *Cursor = new GisToken(token->Sep);
1273 
1274  Cursor = &((*Cursor)->Next);
1275 
1276  break;
1277 
1278  case GTSequenz:
1279  *Cursor = new GisSequenz(0, token->Sep);
1280 
1281  ((GisSequenz*)*Cursor)->Sep2 = ((GisSequenz*)token)->Sep2;
1282 
1283  break;
1284 
1285  case GTSegment:
1286  *Cursor = new GisSegment(0, token->Sep);
1287 
1288  ((GisSegment*)*Cursor)->Sep2 = ((GisSegment*)token)->Sep2;
1289 
1290  break;
1291 
1292  case GTTag:
1293 
1294  case GTTagBegin:
1295  /* if ( token->Type() == GTTag )
1296  *Cursor = new GisTag(((GisTag*)token)->Name, ((GisTag*)token)->Para,
1297  token->Sep);
1298  else
1299  *Cursor = new GisTagBegin(((GisTag*)token)->Name, ((GisTag*)token)->Para,
1300  token->Sep); */
1301  *Cursor = token->Copy();
1302 
1303  Id = WTAG->Id;
1304 
1305  if ( Id == TToct ) {
1306  if ( WTAG->GetParaType(1) == GTParaInt )
1307  AddTag(&Octave, WTAG)->Data.i = ((GisParaInt*)WTAG->GetPara(1))->i;
1308  } else if ( Id == TTkey ) {
1309  if ( WTAG->GetParaType(1) == GTParaInt )
1310  AddTag(&Key, WTAG)->Data.i = ((GisParaInt*)WTAG->GetPara(1))->i;
1311  }
1312 
1313  Cursor = &((*Cursor)->Next);
1314 
1315  break;
1316 
1317  case GTTagEnd:
1318  *Cursor = new GisTagEnd(0, token->Sep);
1319 
1320  Cursor = &((*Cursor)->Next);
1321 
1322  if ( WTAGEND->Begin ) {
1323  Id = WTAGEND->Begin->Id;
1324 
1325  if ( Id == TToct )
1326  EndTag(&Octave, WTAGEND);
1327  else if ( Id == TTkey )
1328  EndTag(&Key, WTAGEND);
1329  }
1330 
1331  break;
1332 
1333  case GTParaInt:
1334 
1335  case GTParaReal:
1336 
1337  case GTParaStr:
1338  return 4;
1339 
1340  case GTComma:
1341  *Cursor = new GisComma(token->Sep);
1342 
1343  Cursor = &((*Cursor)->Next);
1344 
1345  CommaAtEnd = 1;
1346 
1347  break;
1348 
1349  case GTNote:
1350  ChordNote *ANote = GetFreeNote();
1351 
1352  if ( ANote )
1353  ANote->SetNoteOn(token);
1354  else
1355  return 1;
1356 
1357  break;
1358  }
1359  }
1360  else // second call
1361  {
1362  if ( State() != token->Type() && token->Type() != GTNote) return 2;
1363 
1364  if ( token->Type() != GTNote )
1365  Res = CloseCurrentToken();
1366  else {
1367  if ( ChordNotes ) {
1368  Res = !ChordNotes->SetNoteOff(token);
1369  }
1370 
1371  if ( !NoteOn ) // write the Chord
1372  WriteChord();
1373  }
1374  }
1375 
1376  return Res;
1377 }
Definition: GIS.h:107
ChordNote * ChordNotes
Definition: GIS_Head.h:325
TagList * Octave
Definition: GIS_Head.h:328
void SetNoteOn(GisToken *note)
Definition: GIS_Head.cpp:829
Definition: GIS.h:103
Definition: GIS.h:104
virtual GisType Type() const
Definition: GIS.h:136
Definition: GIS.h:100
char CommaAtEnd
Definition: GIS_Head.h:327
virtual GisToken * Copy()
Definition: GIS.h:141
Definition: GIS.h:106
Definition: GIS.h:116
TagList * EndTag(TagList **list, GisTagEnd *tagEnd)
Definition: GIS_Head.cpp:490
ChordNote * GetFreeNote()
Definition: GIS_Head.cpp:1033
char NoteOn
Definition: GIS_Head.h:326
Definition: GIS.h:111
Definition: GIS.h:101
GisType State()
Definition: GIS_Head.h:371
Definition: GIS.h:108
union TagListData::data Data
void WriteChord()
Definition: GIS_Head.cpp:1379
Definition: GIS.h:599
GisToken ** Cursor
Definition: GIS_Head.h:320
Definition: GIS.h:387
#define TToct
Definition: GIS.h:83
std::string Sep
Definition: GIS.h:121
int CloseCurrentToken(char insertRest=1)
Definition: GIS_Head.cpp:1175
TagList * Key
Definition: GIS_Head.h:329
#define WTAG
Definition: GIS_Head.cpp:1245
Definition: GIS.h:102
std::string Id
Definition: GIS_Head.h:322
#define TTkey
Definition: GIS.h:82
#define WTAGEND
Definition: GIS_Head.cpp:1246
Definition: GIS.h:110
TagList * AddTag(TagList **list, GisTag *tag)
Definition: GIS_Head.cpp:474
int SetNoteOff(GisToken *note)
Definition: GIS_Head.cpp:837

◆ program_change() [1/2]

void mutabor::ChannelData::program_change ( int  program)
inline

Definiert in Zeile 447 der Datei Device.h.

Benutzt mutabor::midi::BANK_COARSE und mutabor::midi::BANK_FINE.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::CopyProgramChange() und mutabor::InputGis::Proceed().

447  {
448  Sound = program;
449  int8_t data = controller[midi::BANK_COARSE];
450  if (data != -1) {
451  bank_coarse = data;
453  }
454 
455  data = controller[midi::BANK_FINE];
456  if (data != -1) {
457  bank_fine = data;
459  }
460  }
controller_vector controller
Definition: Device.h:495
uint8_t bank_fine
Definition: Device.h:502
uint8_t bank_coarse
Definition: Device.h:501

◆ program_change() [2/2]

void mutabor::ChannelData::program_change ( const ChannelData o)
inline

◆ Quiet() [1/2]

void mutabor::OutputDeviceClass::Quiet ( Route  r,
int  type 
)
inline

Definiert in Zeile 919 der Datei Device.h.

919  {
920  ScopedLock<OutputDeviceClass> lock(*this);
921  do_Quiet(r,type);
922  }
virtual void do_Quiet(Route r, int type)=0

◆ Quiet() [2/2]

void mutabor::OutputDeviceClass::Quiet ( Route  r,
int  type,
size_t  id 
)
inline

Definiert in Zeile 923 der Datei Device.h.

923  {
924  ScopedLock<OutputDeviceClass> lock(*this);
925  do_Quiet(r,type,id);
926  }
virtual void do_Quiet(Route r, int type)=0

◆ Read() [1/2]

void GisReadHead::Read ( )

Definiert in Zeile 316 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG, GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd und GTUnknown.

Wird benutzt von GisReadArtHead::Build(), GisReadHead::CursorNext() und GisReadHeadOn().

317 {
318  DEBUGLOG (gmnfile, "Cursor: %p" , (void*)Cursor);
319 
320  if ( !Cursor ) return;
321 
322  switch ( Cursor->Type() ) {
323 
324  case GTSegment:
326 
327  break;
328 
329  case GTSequenz:
331 
332  break;
333 
334  case GTNote:
335  DEBUGLOG (gmnfile, "Setting time" );
336 
337  Time = ((GisNote*)Cursor)->Duration;
338 
339  break;
340  case GTNull:case GTUnknown:case GTTag:case GTTagBegin:case GTTagEnd:
341  case GTParaInt:case GTParaReal:case GTParaStr:case GTComma:
342  ;
343 
344  }
345 
346  // the other tokens dont influenz the way of reading
347 }
GisToken * Cursor
Definition: GIS_Head.h:71
Definition: GIS.h:107
#define DEBUGLOG(level,...)
Definition: debug.h:294
Definition: GIS.h:103
Definition: GIS.h:104
virtual GisType Type() const
Definition: GIS.h:136
Definition: GIS.h:100
Definition: GIS.h:106
mutabor::frac Time
Definition: GIS_Head.h:72
Definition: GIS.h:111
void CreateSegmentSubs()
Definition: GIS_Head.cpp:264
Definition: GIS.h:101
Definition: GIS.h:108
Definition: GIS.h:423
void CreateSequenzSubs()
Definition: GIS_Head.cpp:301
Definition: GIS.h:102
Definition: GIS.h:110

◆ Read() [2/2]

void GisReadArtHead::Read ( )

Definiert in Zeile 510 der Datei GIS_Head.cpp.

Benutzt AddTag(), ARStaccatto, ARTenuto, ArticulationHold, TagListData::data::ch, TagListData::Data, DEBUGLOG, EndTag(), GetMidiInstrument(), GetReal(), GetTheSpeedFactor(), GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, TagListData::data::i, TAG, TAGEND, TTaccent, TTalter, TTinstr, TTintens, TToct, TTstacc, TTtempo und TTten.

Wird benutzt von GisReadArtHeadOn(), IMPLEMENT_APP(), mutabor::InputGis::ReadOn() und mutaborGUI::MutFrame::RestoreState().

511 {
512  int Id = 0;
513  DEBUGLOG (gmnfile, "Id: %d; Cursor: %p" , Id, (void*) Cursor);
514 
515  if ( !Cursor ) return;
516 
517  Turn = 3;
518 
519  DEBUGLOG (gmnfile, "Cursor->Type %d" , Cursor->Type());
520 
521  switch ( Cursor->Type() ) {
522 
523  case GTSegment:
525 
526  Turn = 2;
527 
528  break;
529 
530  case GTSequenz:
532 
533  Turn = 2;
534 
535  break;
536 
537  case GTNote:
538  Time2 = ((GisNote*)Cursor)->Duration;
539 
541 
542  DEBUGLOG (gmnfile, "GTNote: Time: %ld/%ld; Time2: %ld/%ld (=Cursor->Duration)" ,
544 
545  Time2 -= Time;
546 
547  DEBUGLOG (gmnfile, "Time: %ld/%ld; Time2: %ld/%ld" ,
548  Time.numerator(),Time.denominator(),Time2.numerator(),Time2.denominator());
549 
550  Turn = 1;
551 
552  break;
553 
554  case GTTag:
555 
556  case GTTagBegin:
557  Id = TAG->Id;
558 
559  if ( Id == TTintens ) {
560  if ( TAG->GetParaType(2) == GTParaInt || TAG->GetParaType(2) == GTParaReal)
561  AddTag(&Intensity, TAG)->Data.ch = (char) (GetReal(TAG->GetPara(2)) * 127);
562  } else if ( Id == TTaccent ) {
563  AddTag(&Intensity, TAG)->Data.ch = 120; // ??? what value
564  } else if ( Id == TTstacc ) {
566  } else if ( Id == TTten ) {
568  } else if ( Id == TToct ) {
569  if ( TAG->GetParaType(1) == GTParaInt )
570  AddTag(&Octave, TAG)->Data.i = ((GisParaInt*)TAG->GetPara(1))->i;
571  } else if ( Id == TTalter ) {
572  if ( TAG->GetParaType(1) != GTParaStr )
573  AddTag(&Alter, TAG)->Data.i = (int) (GetReal(TAG->GetPara(1)) * 0x1FFF) ;
574  } else if ( Id == TTinstr ) {
575  if ( TAG->GetParaType(2) == GTParaStr )
576  AddTag(&Instr, TAG)->Data.ch = GetMidiInstrument(TAG->GetPara(2));
577  } else if ( Id == TTtempo ) {
578  if ( TAG->GetParaType(2) == GTParaStr ) {
579 #ifdef DEBUG
580  long int speed =
581 #endif
582  (AddTag(&Tempo, TAG)->Data.i =
583  GetTheSpeedFactor(TAG->GetPara(2)));
584  DEBUGLOG (gmnfile, "Got speed factor %ld" ,speed);
585  }
586  }
587 
588  break;
589 
590  case GTTagEnd:
591  DEBUGLOG (gmnfile, "Ended tag." );
592 
593  if ( !TAGEND->Begin )
594  break;
595 
596  DEBUGLOG (gmnfile, "Tag Id was %d." ,TAGEND->Begin->Id);
597 
598  Id = TAGEND->Begin->Id;
599 
600  if ( Id == TTintens || Id == TTaccent )
602  else if ( Id == TTstacc || Id == TTten )
604  else if ( Id == TToct )
605  EndTag(&Octave, TAGEND);
606  else if ( Id == TTalter )
607  EndTag(&Alter, TAGEND);
608  else if ( Id == TTinstr )
609  EndTag(&Instr, TAGEND);
610  else if ( Id == TTtempo )
611  EndTag(&Tempo, TAGEND);
612  case GTNull:case GTUnknown:
613  case GTParaInt:case GTParaReal:case GTParaStr:case GTComma:
614  ;
615 
616 
617  }
618 
619  // the other tokens don't influenz the way of reading
620 }
GisToken * Cursor
Definition: GIS_Head.h:71
Definition: GIS.h:107
TagList * Instr
Definition: GIS_Head.h:175
#define TTalter
Definition: GIS.h:84
#define DEBUGLOG(level,...)
Definition: debug.h:294
mutint64 GetTheSpeedFactor(GisToken *token)
This function returns the speed factor that must be multiplied to the duration value in order to get ...
Definition: GIS_Head.cpp:97
Definition: GIS.h:103
Definition: GIS.h:104
virtual GisType Type() const
Definition: GIS.h:136
Definition: GIS.h:100
#define TAG
Definition: GIS_Head.cpp:507
TagList * Alter
Definition: GIS_Head.h:174
Definition: GIS.h:106
TagList * EndTag(TagList **list, GisTagEnd *tagEnd)
Definition: GIS_Head.cpp:490
double GetReal(GisToken *token)
Definition: GIS_Head.cpp:46
mutint64 numerator() const
Definition: Frac.h:84
mutint64 denominator() const
Definition: Frac.h:86
char ArticulationHold[5]
Definition: GIS_Head.cpp:40
TagList * Intensity
Definition: GIS_Head.h:171
TagList * Tempo
Definition: GIS_Head.h:176
mutabor::frac Time2
Definition: GIS_Head.h:166
#define TTten
Definition: GIS.h:81
mutabor::frac Time
Definition: GIS_Head.h:72
#define TTtempo
Definition: GIS.h:76
Definition: GIS.h:111
void CreateSegmentSubs()
Definition: GIS_Head.cpp:264
Definition: GIS.h:101
Definition: GIS.h:108
union TagListData::data Data
char Turn
Definition: GIS_Head.h:74
#define TTinstr
Definition: GIS.h:77
#define TTaccent
Definition: GIS.h:80
TagList * Octave
Definition: GIS_Head.h:173
char GetMidiInstrument(GisToken *token)
Definition: GIS_Head.cpp:56
#define TToct
Definition: GIS.h:83
#define TTintens
Definition: GIS.h:74
#define TTstacc
Definition: GIS.h:79
Definition: GIS.h:423
TagList * Articulation
Definition: GIS_Head.h:172
std::string Id
Definition: GIS_Head.h:73
ARType GetArticulation()
Definition: GIS_Head.h:231
void CreateSequenzSubs()
Definition: GIS_Head.cpp:301
Definition: GIS.h:102
Definition: GIS.h:110
#define TAGEND
Definition: GIS_Head.cpp:508
TagList * AddTag(TagList **list, GisTag *tag)
Definition: GIS_Head.cpp:474

◆ ReadLong()

long ReadLong ( int  SignAllowed)

Definiert in Zeile 282 der Datei GSP.cpp.

Benutzt CHAR0, CurrentLine, CurrentPos, DEBUGLOG2, GetSep(), minus, NumberLength und Sep.

Wird benutzt von ReadNote() und ReadParaNumber().

283 {
284  long a = 0;
285  NumberLength = 0;
286  minus = false;
287 
288  if ( SignAllowed ) {
289  DEBUGLOG2(other,("Sign char %c?"), CHAR0);
290 
291  if ( CHAR0 == ('+') ) CurrentPos++;
292  else if ( CHAR0 == ('-') ) {
293  CurrentPos++;
294  minus = true;
295  }
296  }
297 
298  GetSep();
299 
300  while ( isdigit(CHAR0) && Sep.empty() ) {
301  DEBUGLOG2(other,("Number char %c? (a=%ld)"), CHAR0, a);
302  a = a*10 + (CurrentLine[CurrentPos++]-('0'));
303  NumberLength++;
304  GetSep();
305  }
306 
307  if ( minus ) return -a;
308 
309  return a;
310 }
#define CHAR0
Definition: GSP.cpp:179
int NumberLength
Definition: GSP.cpp:55
std::string Sep
Definition: GSP.cpp:39
bool minus
Definition: GSP.cpp:279
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define DEBUGLOG2(level,...)
Definition: debug.h:295
int GetSep()
Definition: GSP.cpp:192

◆ ReadNewLine()

int ReadNewLine ( )

Definiert in Zeile 83 der Datei GSP_File.cpp.

Benutzt bad, CurrentLine, CurrentPos, Eof, File und GspCurrentLineNr.

Wird benutzt von GetSep() und ReadParaStr().

84 {
85  CurrentPos = 0;
86  if (!File) return -1;
87 
88  if ( (Eof = File->eof()) || (bad = File->bad()) ) {
89  CurrentLine = "";
90  return bad;
91  }
92 
93  std::getline(*File, CurrentLine);
94 
96 
97  return bad = File->bad();
98 #if 0
99 
100  if ( (Eof = mutStreamEOF(*File)) || mutStreamBad(*File) ) {
101  CurrentLine[0] = 0;
102  return mutStreamBad(*File);
103  }
104 
105  File->getline(CurrentLine, GSP_MAX_LINE);
106 
108  return mutStreamBad(*File);
109 #endif
110 }
int Eof
Definition: GSP_File.cpp:38
boost::filesystem::ifstream * File
Definition: GSP_File.cpp:40
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
static int bad
Definition: GSP_File.cpp:43
int GspCurrentLineNr
Definition: GSP.cpp:28

◆ ReadNote()

int ReadNote ( )

Definiert in Zeile 418 der Datei GSP.cpp.

Benutzt accedentials, CHAR0, CharIn(), CheckError(), CurrentLine, CurrentPos, DEBUGLOG2, DoError(), duration, GetSep(), IsLetter(), Note(), octave, ReadLong(), SepPos und string.

Wird benutzt von DoParse().

419 {
420  int i = 0;
421  std::string Name = "";
422  accedentials = "";
423 #if 0
424  mutChar Name[GSP_MAX_LINE] = ("");
425  accedentials[0] = 0;
426 #endif
427 
428  GetSep();
429 
430 
431  for (i = CurrentPos; IsLetter(CHAR0) && !SepPos; CurrentPos++)
432  GetSep();
433 
434  Name = CurrentLine.substr(i,CurrentPos-i);
435 
436  GetSep();
437 
438 #if 0
439  while ( IsLetter(CHAR0) && !SepPos ) {
440  Name[i++] = CurrentLine[CurrentPos++];
441  GetSep();
442  std::string Name /* [GSP_MAX_LINE]*/ = ("");
443 
444  }
445 
446  Name[i] = 0;
447 
448 #endif
449 
450  DEBUGLOG2(other,("SepPos: %d"),(int)SepPos);
451 
452  if ( SepPos )
453  return CheckError(Note(Name, accedentials, octave, duration));
454 
455  i = 0; // accedentials
456 
457  while ( CharIn(CHAR0, "#&") && !SepPos ) {
459 #if 0
461 #endif
462  GetSep();
463  }
464 
465 #if 0
466  accedentials[i] = 0;
467 
468 #endif
469 
470  DEBUGLOG2(other,("SepPos: %d"),(int)SepPos);
471 
472  if ( SepPos )
473  return CheckError(Note(Name, accedentials, octave, duration));
474 
475  size_t cp = CurrentPos; // octave
476  int oct = ReadLong(1);
477  if ( cp != CurrentPos ) octave = oct;
478  if ( SepPos || !CharIn(CHAR0, "/*.") )
479  return CheckError(Note(Name, accedentials, octave, duration));
480 
481  int DurOk = 0; // duration
482  duration = frac(1,1);
483  if ( CHAR0 == ('*') ) {
484  DurOk = 1;
485  CurrentPos++;
486  duration = frac(ReadLong(0));
487 
488  if ( !duration )
489  return DoError(21); // error: nominator expected
490  }
491 
492  if ( SepPos || !CharIn(CHAR0, "/.") )
493  return CheckError(Note(Name, accedentials, octave, duration));
494 
495  if ( CHAR0 == '/' ) {
496  DurOk = 1;
497  CurrentPos++;
498  duration /= ReadLong(0);
499 
500  if ( !duration )
501  return DoError(22); // error: denominator expected
502  }
503 
504  if ( SepPos )
505  return CheckError(Note(Name, accedentials, octave, duration));
506 
507  if ( CHAR0 == '.' && !DurOk )
508  return DoError(23); // error: dotting wihtout duration
509 
510  frac add = duration;
511 
512  while ( CHAR0 == '.' && !SepPos ) {
513  add *= frac(1,2);
514  duration += add;
515  CurrentPos++;
516  GetSep();
517  }
518 
519  return CheckError(Note(Name, accedentials, octave, duration));
520 }
#define string
int IsLetter(char c)
Definition: GSP.cpp:96
#define CHAR0
Definition: GSP.cpp:179
int Note(const std::string &name, const std::string &accedentials, int octave, const mutabor::frac &duration)
Definition: GIS.cpp:700
static int octave
Definition: GSP.cpp:66
int CheckError(int nr)
Definition: GSP.cpp:157
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define DEBUGLOG2(level,...)
Definition: debug.h:295
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:142
static frac duration
Definition: GSP.cpp:70
static std::string accedentials
Definition: GSP.cpp:68
int GetSep()
Definition: GSP.cpp:192
#define SepPos
Definition: GSP.cpp:46
long ReadLong(int SignAllowed)
Definition: GSP.cpp:282
int CharIn(char c, const char *s)
Definition: GSP.cpp:89

◆ ReadParaNumber()

int ReadParaNumber ( )

Definiert in Zeile 313 der Datei GSP.cpp.

Benutzt CHAR0, CheckError(), CurrentPos, GetSep(), minus, NumberLength, ReadLong(), Sep, TagParaInt() und TagParaReal().

Wird benutzt von DoParse().

314 {
315  long a = ReadLong(1);
316  if ( !Sep.empty() || CHAR0 != ('.') ) // integer
317  return CheckError(TagParaInt(a));
318 
319  // real
320  CurrentPos++; // comma position
321  GetSep();
322  char minus1 = minus;
323  double r = (double)a;
324  if ( !Sep.empty() ) // real without fraction part
325  return CheckError(TagParaReal(r));
326 
327  float b = (double) ReadLong(0);
328  for (int i = 1; i <= NumberLength; i++)
329  b = b / 10;
330 
331  if ( minus1 ) b = -b;
332 
333  return CheckError(TagParaReal(r+b));
334 }
#define CHAR0
Definition: GSP.cpp:179
int NumberLength
Definition: GSP.cpp:55
std::string Sep
Definition: GSP.cpp:39
bool minus
Definition: GSP.cpp:279
int TagParaInt(long i)
Definition: GIS.cpp:741
int CheckError(int nr)
Definition: GSP.cpp:157
size_t CurrentPos
Definition: GSP_File.cpp:37
int GetSep()
Definition: GSP.cpp:192
int TagParaReal(double x)
Definition: GIS.cpp:756
long ReadLong(int SignAllowed)
Definition: GSP.cpp:282

◆ ReadParaStr()

int ReadParaStr ( )

Definiert in Zeile 337 der Datei GSP.cpp.

Benutzt CHAR0, CHAR1, CheckError(), CurrentLine, CurrentPos, Eof, GetSep(), NEW_LINE, ReadNewLine(), string und TagParaStr().

Wird benutzt von DoParse().

338 {
339  std::string s = "";
340 #if 0
341  mutChar s[GSP_MAX_LINE] = "";
342 #endif
343  CurrentPos++;
344 
345  while ( (CHAR0 != '"' || CHAR1 == '"') && !Eof ) {
346  // new Line
347  if ( !CHAR0 ) {
348  ReadNewLine();
349  s += NEW_LINE;
350  continue;
351  }
352  if ( CHAR0 == ('"') )
353  CurrentPos++;
354 
355  s += CurrentLine[CurrentPos++];
356 #if 0
357  s[i++] = CurrentLine[CurrentPos++];
358 
359 #endif
360  }
361 
362  if ( CHAR0 == ('"') ) CurrentPos++;
363 
364  s += (char)0;
365  GetSep();
366 
367  return CheckError(TagParaStr(s));
368 }
int Eof
Definition: GSP_File.cpp:38
#define string
int ReadNewLine()
Definition: GSP_File.cpp:83
#define CHAR0
Definition: GSP.cpp:179
int TagParaStr(const std::string &s)
Definition: GIS.cpp:771
#define NEW_LINE
Definition: GSP.cpp:72
int CheckError(int nr)
Definition: GSP.cpp:157
#define CHAR1
Definition: GSP.cpp:180
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
int GetSep()
Definition: GSP.cpp:192

◆ ReadTag()

int ReadTag ( )

Definiert in Zeile 371 der Datei GSP.cpp.

Benutzt BeginParameter(), CHAR0, CheckError(), CurrentLine, CurrentPos, EndParameter(), GetSep(), GspError, IsLetter(), LastTag, ParaMode, SepPos, string und Tag().

Wird benutzt von DoParse().

372 {
373  std::string Name = "";
374  int i = 0;
375  LastTag = 2; // to have an indicator, wether the last token was a tag
376  CurrentPos++;
377  GetSep();
378  i = CurrentPos;
379 
380  while ( IsLetter(CHAR0) && !SepPos ) {
381  CurrentPos++;
382 #if 0
383  Name[i++] = CurrentLine[CurrentPos++];
384 #endif
385  GetSep();
386  }
387 
388  Name = CurrentLine.substr (i,CurrentPos-i);
389 
390 #if 0
391  Name[i] = 0;
392 
393 #endif
394  if ( !GspError ) CheckError(Tag(Name));
395 
396  if ( CHAR0 == '<' ) {
397  CurrentPos++;
398  GetSep();
399 
401 
402  ParaMode = 1;
403  }
404 
405  if ( CHAR0 == '>' ) {
406  CurrentPos++;
407  GetSep();
408 
409  if ( !GspError ) CheckError(EndParameter());
410 
411  ParaMode = 0;
412  }
413 
414  return GspError;
415 }
#define string
int IsLetter(char c)
Definition: GSP.cpp:96
#define CHAR0
Definition: GSP.cpp:179
int GspError
Definition: GSP.cpp:32
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
char ParaMode
Definition: GSP.cpp:53
int CheckError(int nr)
Definition: GSP.cpp:157
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
int BeginParameter()
Definition: GIS.cpp:619
int EndParameter()
Definition: GIS.cpp:626
char LastTag
Definition: GSP.cpp:63
int GetSep()
Definition: GSP.cpp:192
#define SepPos
Definition: GSP.cpp:46

◆ ReadyForBoss()

int GisWriteHead::ReadyForBoss ( )

Definiert in Zeile 1073 der Datei GIS_Head.cpp.

Benutzt Comma(), GTNote, GTSequenz, GisToken::Next und GisToken::Type().

Wird benutzt von GisWriteHead::CloseSubs().

1074 {
1075  CloseCurrentToken(0); //+ zu hart: bei Unknown muß keine Note eingefügt werden (zumindest nur beim ersten
1076  // put in Sequenz, when single token mode
1077 #ifdef GMN_STRICT
1078 
1079  if ( SingleToken && Data && &Data->Next != Cursor && Data->Type() != GTSequenz ) {
1080  char isSingle = 2;
1081  GisToken *Token = Data, LastToken = 0;
1082 
1083  while ( 1 ) {
1084  if ( Token->Type() == GTNote )
1085  if ( isSingle ) isSingle--;
1086 
1087  if ( Token->Next )
1088  Token = Token->Next;
1089  else
1090  break;
1091  }
1092 
1093  if ( !isSingle ) {
1094  GisToken **Comma = 0;
1095 
1096  if ( CommaAtEnd ) // get right position
1097  {
1098  Comma = &Data;
1099  GisToken **Comma = &Data;
1100 
1101  while ( (*Comma)->Next )
1102  Comma = &((*Comma)->Next);
1103 
1104  *Comma = 0;
1105  }
1106  Data = new GisSequenz(Data, " ");
1107 
1108  Cursor = &Data->Next;
1109 
1110  if ( Comma ) {
1111  *Cursor = *Comma;
1112  Cursor = &(*Comma)->Next;
1113  }
1114  }
1115  }
1116 
1117 #endif
1118  return 0;
1119 }
Definition: GIS.h:107
virtual GisType Type() const
Definition: GIS.h:136
char CommaAtEnd
Definition: GIS_Head.h:327
Definition: GIS.h:116
GisToken * Next
Definition: GIS.h:120
int Comma()
Definition: GIS.cpp:786
char SingleToken
Definition: GIS_Head.h:323
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken * Data
Definition: GIS_Head.h:320
int CloseCurrentToken(char insertRest=1)
Definition: GIS_Head.cpp:1175
Definition: GIS.h:102

◆ RealtimePlay()

void mutabor::InputDeviceClass::RealtimePlay ( )
static

Play all input devices in realtime mode The the realtime mode allows interactive playing together with the integrated sequencer.

Definiert in Zeile 496 der Datei Device.cpp.

Benutzt mutabor::CurrentTime und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von mutabor::InputMidiPort::Proceed().

496  {
497  CurrentTime.UseRealtime(true);
498  last_was_stop = false;
499  for (InputDeviceList::iterator i = deviceList.begin();
500  i != deviceList.end(); i++) {
501  (*i)->Play();
502  }
503  }
static bool last_was_stop
Definition: Device.h:1338
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
CurrentTimer CurrentTime
Definition: timing.cpp:43

◆ RefreshDlg()

virtual void mutabor::BoxClass::CompileCallback::RefreshDlg ( )
pure virtual

◆ Register()

void mutabor::BoxClass::Register ( ChangedCallback callback)
inlineprotected

Definiert in Zeile 848 der Datei Box.h.

848  {
849  callbacks.push_back(callback);
850  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:826

◆ rehash()

void mutabor::InputDeviceClass::current_keys_type::rehash ( size_t  n)
inline

Definiert in Zeile 1115 der Datei Device.h.

1115  {
1116  map.rehash(n);
1117  }

◆ Remove() [1/6]

template<class I , class O , class B >
bool mutabor::TRouteClass< I, O, B >::Remove ( OutputDevice out)
virtual

remove an existing output device

Definiert in Zeile 185 der Datei Route.cpp.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::Remove().

185  {
186  if (out != Out) {
187  UNREACHABLEC;
188  return false;
189  }
190  Out.reset();
191  return true;
192  }
mutabor::OutputMidiFile * out
OutputDevice Out
Definition: Route.h:466
#define UNREACHABLEC
Definition: debug.h:310

◆ Remove() [2/6]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Remove ( InputDevice in)
virtual

remove an existing input device

◆ Remove() [3/6]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Remove ( Box b)
virtual

remov an existing box

◆ Remove() [4/6]

bool mutabor::BoxClass::Remove ( Route route)
virtual

remove a route

Definiert in Zeile 160 der Datei Box.cpp.

Benutzt DEBUGLOG, intrusive_ptr_get_refcount() und mutASSERT().

Wird benutzt von mutaborGUI::BoxData::GetShapes().

160  {
161  BoxLock lock(this);
162  DEBUGLOG (smartptr, "Route: %p (%d)" ,
163  (void*)route.get(),
164  (int)intrusive_ptr_get_refcount(route.get()));
165  bool found =
166  routes.erase(route);
167  mutASSERT(found);
168  DEBUGLOG (smartptr, "Route; %p (%d)" ,(void*)route.get(),
169  (int)intrusive_ptr_get_refcount(route.get()));
170  return found;
171  }
mutabor::Route route
#define DEBUGLOG(level,...)
Definition: debug.h:294
mutASSERT(p.get_intervals==cmp)
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
routeListType routes
Definition: Box.h:819

◆ Remove() [5/6]

virtual bool mutabor::Device::Remove ( Route route)
pure virtual

◆ Remove() [6/6]

template<class T , class P , class L >
bool mutabor::CommonTypedDeviceAPI< T, P, L >::Remove ( Route route)
virtual

remove a route

Implementiert mutabor::Device.

Definiert in Zeile 164 der Datei Device.cpp.

Wird benutzt von mutabor::CommonTypedDeviceAPI< InputDeviceClass >::Replace().

164  {
165  DEBUGLOG (smartptr, "Route: %p (%d)" ,
166  (void*)route.get(),
167  (int)intrusive_ptr_get_refcount(route.get()));
168  bool found = routes.erase(route);
169  mutASSERT(found);
170  DEBUGLOG (smartptr, "Route; %p (%d)" ,(void*)route.get(),
171  (int)intrusive_ptr_get_refcount(route.get()));
172  return found;
173  }
mutabor::Route route
#define DEBUGLOG(level,...)
Definition: debug.h:294
routeListType routes
Definition: Device.h:656
mutASSERT(p.get_intervals==cmp)
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)

◆ remove() [1/2]

void mutabor::InputDeviceClass::current_keys_type::remove ( int  key,
int  velocity,
int  unique_id,
Route R 
)
inline

Definiert in Zeile 1092 der Datei Device.h.

Benutzt DEBUGLOG.

Wird benutzt von mutabor::InputDeviceClass::Panic().

1095  {
1096  std::pair<map_type::iterator, map_type::iterator> range =
1097  map.equal_range(entry(key,unique_id,velocity, R, NULL, NULL, NULL));
1098  if (range.first != map.end()) {
1099  map.erase(range.first);
1100  DEBUGLOG(routing,("(key = %d, channel = %lu, id = %lu)"),
1101  key,
1102  (unsigned long)R->get_session_id(),
1103  (unsigned long)unique_id);
1104  }
1105  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
#define key

◆ remove() [2/2]

void mutabor::InputDeviceClass::current_keys_type::remove ( iterator  i)
inline

Definiert in Zeile 1107 der Datei Device.h.

1107  {
1108  map.erase(i);
1109  }

◆ remove_watchdog()

template<class T >
void mutabor::BoxClass::remove_watchdog ( dog)
inline

Definiert in Zeile 781 der Datei Box.h.

Benutzt mutASSERT() und mutUnused.

781  {
782  mutUnused(dog);
783  mutASSERT(dog == loopguard);
784  loopguard = NULL;
785  }
watchdog< Box > * loopguard
Definition: Box.h:844
#define mutUnused(expr)
Definition: Defs.h:106
mutASSERT(p.get_intervals==cmp)

◆ RemoveComma()

void GisWriteHead::RemoveComma ( )

Definiert in Zeile 1121 der Datei GIS_Head.cpp.

Benutzt GisToken::Next.

Wird benutzt von CloseAllSubs() und GisWriteHead::CloseSubs().

1122 {
1123  if ( CommaAtEnd ) {
1124  GisToken **H = &Data;
1125 
1126  while ( &(*H)->Next != Cursor )
1127  H = &(*H)->Next;
1128 
1129  GisToken *SaveNext = (*H)->Next;
1130 
1131  delete *H;
1132 
1133  *H = SaveNext;
1134 
1135  Cursor = H;
1136  }
1137 }
char CommaAtEnd
Definition: GIS_Head.h:327
Definition: GIS.h:116
GisToken * Next
Definition: GIS.h:120
GisToken ** Cursor
Definition: GIS_Head.h:320
GisToken * Data
Definition: GIS_Head.h:320

◆ RemoveFromBoxList()

void mutabor::BoxClass::RemoveFromBoxList ( Box  dev)
staticprotected

Definiert in Zeile 297 der Datei Box.cpp.

Benutzt UNREACHABLECT.

298  {
299  typename listtype::iterator i =
300  FindInBoxList(b);
301  if (i == boxList.end()) {
303  } else
304  boxList.erase(i);
305  }
static listtype boxList
Definition: Box.h:811
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:862
#define UNREACHABLECT(type)
Definition: debug.h:309
BoxListType listtype
Definition: Box.h:252

◆ RemoveFromDeviceList()

template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::RemoveFromDeviceList ( DevicePtr  dev)
staticprotected

Definiert in Zeile 307 der Datei Device.cpp.

308  {
309  deviceList.erase(dev);
310  }
static listtype deviceList
Definition: Device.h:697

◆ RemoveFromRouteList()

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::RemoveFromRouteList ( Route  route)
staticprotected

Definiert in Zeile 297 der Datei Route.cpp.

298  {
299 #ifdef DEBUG
300  bool erg =
301 #endif
303  mutASSERT(erg);
304  }
mutabor::Route route
static routeListType routeList
Definition: Route.h:475
mutASSERT(p.get_intervals==cmp)
bool erase(const value_type &e)

◆ RemoveTag()

TagList* RemoveTag ( TagList **  list)

Definiert in Zeile 463 der Datei GIS_Head.cpp.

Benutzt TagListData::Next.

Wird benutzt von AddTag() und EndTag().

464 {
465  if ( *list ) {
466  TagList *TopTag = *list;
467  *list = TopTag->Next;
468  delete TopTag;
469  }
470 
471  return *list;
472 }
struct TagListData * Next
Definition: GIS_Head.h:148

◆ Replace() [1/6]

template<class I , class O , class B >
bool mutabor::TRouteClass< I, O, B >::Replace ( OutputDevice olddev,
OutputDevice newdev 
)
virtual

replace an existing output device

Definiert in Zeile 154 der Datei Route.cpp.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::Replace().

155  {
156  if (Out != olddev) {
157  UNREACHABLEC;
158  return false;
159  }
160  Out = newdev;
161  return true;
162  }
OutputDevice Out
Definition: Route.h:466
#define UNREACHABLEC
Definition: debug.h:310

◆ Replace() [2/6]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Replace ( InputDevice olddev,
InputDevice newdev 
)
virtual

replace an existing input device

◆ Replace() [3/6]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Replace ( Box oldbox,
Box newbox 
)
virtual

replace an existing box

◆ Replace() [4/6]

bool mutabor::BoxClass::Replace ( Route oldRoute,
Route newRoute 
)
virtual

replace a route

Definiert in Zeile 147 der Datei Box.cpp.

Benutzt DEBUGLOG und mutASSERT().

147  {
148  DEBUGLOG (smartptr, "oldroute; %p, newroute; %p" ,
149  (void*)oldroute.get(),(void*)newroute.get());
150  bool found = Remove(oldroute);
151  mutASSERT(found);
152  if (found)
153  Add(newroute);
154 
155  DEBUGLOG (smartptr, "oldroute; %p, newroute; %p" ,
156  (void*)oldroute.get(),(void*)newroute.get());
157  return found;
158  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
virtual void Add(Route &route)
add a route
Definition: Box.cpp:133
mutASSERT(p.get_intervals==cmp)
virtual bool Remove(Route &route)
remove a route
Definition: Box.cpp:160

◆ Replace() [5/6]

virtual bool mutabor::Device::Replace ( Route oldRoute,
Route newRoute 
)
pure virtual

◆ Replace() [6/6]

template<class T , class P , class L >
bool mutabor::CommonTypedDeviceAPI< T, P, L >::Replace ( Route oldroute,
Route newroute 
)
virtual

replace a route

Implementiert mutabor::Device.

Definiert in Zeile 149 der Datei Device.cpp.

150  {
151  DEBUGLOG (smartptr, "oldroute; %p, newroute; %p" ,
152  (void*)oldroute.get(),(void*)newroute.get());
153  bool found = CommonTypedDeviceAPI<T,P,L>::Remove(oldroute);
154  mutASSERT(found);
155  if (found)
157 
158  DEBUGLOG (smartptr, "oldroute; %p, newroute; %p" ,
159  (void*)oldroute.get(),(void*)newroute.get());
160  return found;
161  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
mutASSERT(p.get_intervals==cmp)
virtual bool Remove(Route &route)
remove a route
Definition: Device.cpp:164
virtual void Add(Route &route)
add a route
Definition: Device.cpp:135

◆ Reset() [1/2]

void mutabor::ChannelData::Reset ( )
inline

Definiert in Zeile 131 der Datei Device.h.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_Open() und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_Panic().

132  {
133  for (controller_vector::iterator i = controller.begin();
134  i != controller.end();
135  ++i) *i = -1;
136  for (controller_vector::iterator i = controller_changed.begin();
137  i != controller_changed.end();
138  ++i) *i = -1;
139  first_unchanged = 0;
140  looped = false;
141  Sound = -1;
142  bank_coarse = -1;
143  bank_fine = -1;
144  bend = 0;
145  }
size_t first_unchanged
Definition: Device.h:497
controller_vector controller
Definition: Device.h:495
uint8_t bank_fine
Definition: Device.h:502
controller_vector controller_changed
Definition: Device.h:496
uint8_t bank_coarse
Definition: Device.h:501

◆ Reset() [2/2]

void mutabor::BoxClass::Reset ( )
virtual

Definiert in Zeile 393 der Datei Box.cpp.

Benutzt box und mutabor::hidden::mutabor_reset_box().

393  {
395 #if 0
396  hidden::mutabor_reset_action_trace(box);
397 #endif
398  }
mutabor_box_type * box
Definition: Box.h:816
void mutabor_reset_box(mutabor_box_type *box)
Definition: box.cpp:124

◆ resume_logic()

void mutabor::BoxClass::resume_logic ( )
inline

Allow the execution of logic actions after this function has been disabled.

Definiert in Zeile 634 der Datei Box.h.

634  {
635  if (box)
637  }
mutabor_box_type * box
Definition: Box.h:816
unsigned int auto_reset_break_logic
Automatically reset logic breaking.
Definition: box.h:104
volatile struct mutabor_box_flags flags
Definition: box.h:164

◆ ResumeKeys() [1/2]

void mutabor::InputDeviceClass::ResumeKeys ( )
inline

Definiert in Zeile 1320 der Datei Device.h.

1320  {
1321  ScopedLock<thistype> lock(*this);
1322  ResumeKeys(lock);
1323  }

◆ ResumeKeys() [2/2]

virtual void mutabor::InputDeviceClass::ResumeKeys ( ScopedLock< thistype > &  lock)
inlinevirtual

Definiert in Zeile 1325 der Datei Device.h.

Benutzt key, mutUnused und mutabor::Panic().

1325  {
1326  mutUnused(lock);
1327  DoResumeKeys();
1328  }
#define mutUnused(expr)
Definition: Defs.h:106

◆ RouteFactory()

mutabor::RouteFactory::RouteFactory ( )

Creates a route Factory.

Constructor. Should be overridden if classes inhert from Route.

Definiert in Zeile 534 der Datei Route.cpp.

Benutzt mutabor::RouteFactory::factory.

534  {
535  if (factory) {
536 // UNREACHABLEC;
537  BOOST_THROW_EXCEPTION( FactoryAlreadySet(factory,this));
538  /*
539  delete factory;
540  factory = this;
541  */
542 
543  } else factory = this;
544  }
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:748

◆ RouteFactoryNotSet()

mutabor::RouteFactory::RouteFactoryNotSet::RouteFactoryNotSet ( )
inline

Definiert in Zeile 585 der Datei Route.h.

585 :logic_error(_mutN("Trying to create a route without the correct factory. You (the programmer) must create one!")) {}
#define _mutN(x)
Definition: Defs.h:137

◆ RouteIOError()

compat30::RouteIOError::RouteIOError ( const std::string what_arg)
inlineexplicit

Definiert in Zeile 57 der Datei RouteCompat.h.

Benutzt compat30::LoadRoutes(), compat30::SaveRoutes() und string.

57  :
58  range_error(what_arg) {}

◆ runtime_error() [1/2]

void mutabor::Device::runtime_error ( int  type,
const std::string message 
)
virtual

Process an error message (doing the real work)

Definiert in Zeile 85 der Datei Device.cpp.

Benutzt string, t und mutabor::to_string().

Wird benutzt von mutabor::CommonFileInputDevice::exception_error(), mutabor::MidiPortOutputProvider::Open() und mutabor::InputGis::Open().

85  {
87  std::cerr << t << ": " << message << std::endl;
88  }
#define string
hidden::mutabor_error_type error_type
Definition: Box.h:113
MUTABOR_EXTERN_C_END const char * t
Definition: debug.h:323
const char * to_string(error_type type)
Definition: Box.h:115

◆ runtime_error() [2/2]

void mutabor::BoxClass::runtime_error ( error_type  type,
const char *  message 
)
virtual

Process an error message (doing the real work)

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 853 der Datei Box.cpp.

Benutzt mutabor::to_string().

Wird benutzt von error_callback() und mutabor::error_callback().

853  {
854  fprintf(stderr,"%s: %s\n",to_string(type),message);
855  }
const char * to_string(error_type type)
Definition: Box.h:115

◆ Save() [1/5]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Save ( tree_storage config)
virtual

Write the route settings into a tree based configuration.

config (tree_storage &) configuration where the route settings will be stored

Definiert in Zeile 71 der Datei Route.cpp.

72  {
73 #ifdef DEBUG
74  std::string oldpath = config.GetPath();
75 #endif
76  config.Write("Input Device", inputid);
77  config.Write("Output Device", outputid);
78  config.Write("Box", boxid);
79  config.Write("Active", Active);
80  if (In)
81  In->Save(config,this);
82  if (Out)
83  Out->Save(config,this);
84  mutASSERT(oldpath == config.GetPath());
85  }
InputDevice In
Definition: Route.h:467
#define string
mutASSERT(p.get_intervals==cmp)
OutputDevice Out
Definition: Route.h:466

◆ Save() [2/5]

void mutabor::BoxClass::Save ( tree_storage config)
virtual

Save current device settings in a tree storage.

config (tree_storage) storage class, where the data will be saved.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 113 der Datei Box.cpp.

Benutzt mutUnused.

Wird benutzt von mutaborGUI::BoxData::Save() und mutabor::BoxFactory::SaveBoxes().

113  {
114  mutUnused(config);
115  }
#define mutUnused(expr)
Definition: Defs.h:106

◆ Save() [3/5]

void mutabor::BoxClass::Save ( tree_storage config,
const RouteClass route 
)
virtual

Save route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function saves them in a tree storage. config (tree_storage *) Storage class, where the data will be saved. route (Route) Route whos data shall be saved.

Definiert in Zeile 117 der Datei Box.cpp.

Benutzt mutUnused.

118  {
119  mutUnused(config);
120  mutUnused(route);
121  }
mutabor::Route route
#define mutUnused(expr)
Definition: Defs.h:106

◆ Save() [4/5]

virtual void mutabor::Device::Save ( tree_storage config)
pure virtual

◆ Save() [5/5]

virtual void mutabor::Device::Save ( tree_storage config,
const RouteClass route 
)
pure virtual

Save route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function saves them in a tree storage. config (tree_storage *) Storage class, where the data will be saved. route (Route) Route whos data shall be saved.

Implementiert in mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, midicmnInputDevice, testCommonFileDeviceTimer, testCommonFileDeviceTimer, mutabor::OutputGis und midicmnOutputDevice.

◆ SaveBoxes()

void mutabor::BoxFactory::SaveBoxes ( tree_storage config)
static

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 1035 der Datei Box.cpp.

Benutzt mutabor::BoxClass::GetBoxList(), mutabor::tree_storage::GetPath(), mutASSERT(), mutabor::BoxClass::Save(), string, mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toParent() und mutabor::tree_storage::Write().

Wird benutzt von mutabor::RouteFactory::DoSaveRoutes().

1036  {
1037 #ifdef DEBUG
1038  std::string oldpath = config.GetPath();
1039 #endif
1040  config.toLeaf(("Boxes"));
1041 
1042  const BoxListType & list =
1044  for (BoxListType::const_iterator b = list.begin();
1045  b != list.end(); b++) {
1046  int id = (*b)->get_routefile_id();
1047  config.toLeaf(("Box"), id);
1048  config.Write(("Type"), (*b)->GetType() );
1049  config.Write(("Type Name"),(*b)->GetTypeName());
1050  (*b) -> Save (config);
1051  config.toParent();
1052  }
1053 
1054  config.toParent();
1055  mutASSERT(oldpath == config.GetPath());
1056  }
#define string
static const listtype & GetBoxList()
Definition: Box.h:355
std::vector< Box > BoxListType
Definition: Box.h:131
mutASSERT(p.get_intervals==cmp)

◆ SaveInputDevices()

void mutabor::DeviceFactory::SaveInputDevices ( tree_storage config)
static

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 618 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::tree_storage::GetPath(), in, mutASSERT(), string, mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toParent(), TRACE und mutabor::tree_storage::Write().

Wird benutzt von mutabor::RouteFactory::DoSaveRoutes().

619  {
620 #ifdef DEBUG
621  std::string oldpath = config.GetPath();
622 #endif
623  config.toLeaf("InputDevices");
624 
625 
626  TRACE;
628  for (InputDeviceList::const_iterator in = list.begin();
629  in != list.end(); in++) {
630  config.toLeaf("Device",(*in)->get_routefile_id());
631  config.Write("Type",(*in)->GetType());
632  config.Write("Type Name",(*in)->GetTypeName());
633  (*in) -> Save (config);
634  config.toParent();
635  }
636  TRACE;
637 
638  config.toParent();
639  mutASSERT(oldpath == config.GetPath());
640  }
#define string
mutabor::InputMidiFile * in
mutASSERT(p.get_intervals==cmp)
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1020
#define TRACE
Definition: debug.h:299
static const listtype & GetDeviceList()
Definition: Device.h:755

◆ SaveOutputDevices()

void mutabor::DeviceFactory::SaveOutputDevices ( tree_storage config)
static

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 562 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::tree_storage::GetPath(), mutASSERT(), out, string, mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toParent() und mutabor::tree_storage::Write().

Wird benutzt von mutabor::RouteFactory::DoSaveRoutes().

563  {
564 #ifdef DEBUG
565  std::string oldpath = config.GetPath();
566 #endif
567  config.toLeaf("OutputDevices");
568 
569  const OutputDeviceList & list =
571  for (OutputDeviceList::const_iterator out = list.begin();
572  out != list.end(); out++) {
573  config.toLeaf("Device",
574  static_cast<Device *>((*out).get())->get_routefile_id());
575  config.Write("Type",(*out)->GetType());
576  config.Write("Type Name",(*out)->GetTypeName());
577  (*out) -> Save (config);
578  config.toParent();
579  }
580 
581  config.toParent();
582  mutASSERT(oldpath == config.GetPath());
583  }
#define string
mutabor::OutputMidiFile * out
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:841
mutASSERT(p.get_intervals==cmp)

◆ SavePos()

void SavePos ( )

Definiert in Zeile 169 der Datei GSP.cpp.

Benutzt CurrentLine, CurrentPos, GspCurrentLineNr, PossibleErrorLine, PossibleErrorLineNr und PossibleErrorPos.

Wird benutzt von DoParse().

170 {
174 }
int PossibleErrorLineNr
Definition: GSP.cpp:35
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
std::string PossibleErrorLine
Definition: GSP.cpp:37
int PossibleErrorPos
Definition: GSP.cpp:36
int GspCurrentLineNr
Definition: GSP.cpp:28

◆ SaveRoutes() [1/3]

void compat30::SaveRoutes ( std::string )

write the routes to the given string

Parameter
configstring to be written to
Rückgabe
the error message in case of an error.

reimplement WriteRoutes

Definiert in Zeile 315 der Datei RouteCompat.cpp.

Benutzt DEBUGLOG2, mutabor::DTGis, mutabor::DTMidiFile, mutabor::DTMidiPort, mutabor::DTNotSet, mutabor::DTUnknown, mutabor::Device::get_routefile_id(), mutabor::CommonMidiOutput< T, D >::GetBendingRange(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::InitializeIds(), mutabor::NoBox, mutabor::rtmidiin, mutabor::RTName, mutabor::str(), string, STUB und UNREACHABLE.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteSave() und compat30::RouteIOError::RouteIOError().

316  {
318  STUB;
319 
320  RouteClass::InitializeIds();
321 
322  // clean config
323  config = "";
324  // remove unused output devices
325  OutputDevice Out;
326  InputDevice In;
327 
328  // Output schreiben
329  config += ("OUTPUT\n");
330 
331  const OutputDeviceList & OutDevices =
332  OutputDeviceClass::GetDeviceList();
333 
334  for ( OutputDeviceList::const_iterator Out = OutDevices.begin();
335  Out != OutDevices.end(); Out++) {
336 
337  std::string sName = (*Out)->GetName();
338 
339  if ( sName.find((" ")) != std::string::npos)
340  sName = "\"" + sName + "\"";
341 
342  switch ( (*Out)->GetType() ) {
343 
344  case DTUnknown:
345  config += boost::str(boost::format(" UNKNOWN %s\n")%
346  sName.c_str());
347 
348  break;
349 
350  case DTMidiPort:
351  {
352  OutputMidiPort * MidiOut =
353  dynamic_cast <OutputMidiPort *>((*Out).get());
354  if (MidiOut)
355  config += boost::str(boost::format(" MIDIPORT %s %d %d\n")
356  % sName.c_str()
357  % (*Out)->get_routefile_id()
358  % MidiOut->GetBendingRange());
359  else
360  UNREACHABLE;
361  }
362  break;
363 
364  case DTMidiFile:
365  {
366  OutputMidiFile * MidiFile =
367  dynamic_cast <OutputMidiFile *>((*Out).get());
368  if (MidiFile)
369  config += boost::str(boost::format(" MIDIFILE %s %d %d\n")
370  % sName.c_str()
371  % 0
372  % MidiFile->GetBendingRange());
373  else
374  UNREACHABLE;
375  }
376  break;
377 
378  case DTGis:
379  config += boost::str(boost::format(" GMN %s\n")% sName.c_str());
380 
381  break;
382 
383  case DTNotSet:
384  UNREACHABLE;
385  }
386  }
387 
388  DEBUGLOG2(routing,("WriteConfig: %s"), (config.c_str()));
389 
390  // Input schreiben
391  config += ("INPUT\n");
392 
393  const InputDeviceList & InDevices =
394  InputDeviceClass::GetDeviceList();
395  for ( InputDeviceList::const_iterator In = InDevices.begin();
396  In != InDevices.end(); In++) {
397  std::string sName = (*In)->GetName();
398 
399  if ( sName.find((" ")) != std::string::npos )
400  sName = "\"" + sName + "\"";
401 
402  switch ( (*In)->GetType() ) {
403 
404  case DTUnknown:
405  config += boost::str(boost::format(" UNKNOWN %s\n") % sName.c_str());
406 
407  break;
408 
409  case DTGis:
410  config += boost::str(boost::format(" GMN %s\n") % sName.c_str());
411 
412  break;
413 
414  case DTMidiPort: {
415  int nr = 0;
416  if (rtmidiin) {
417  rtmidi::PortList list = rtmidiin->getPortList();
418  std::string port = static_cast<InputMidiPort *>((*In).get())->GetDevId()
419  -> getName( rtmidi::PortDescriptor::INCLUDE_API |
420  rtmidi::PortDescriptor::UNIQUE_PORT_NAME |
421  rtmidi::PortDescriptor::SESSION_PATH );
422  for (rtmidi::PortList::iterator i = list.begin();
423  i != list.end(); ++i) {
424  if ((*i)-> getName( rtmidi::PortDescriptor::INCLUDE_API |
425  rtmidi::PortDescriptor::UNIQUE_PORT_NAME |
426  rtmidi::PortDescriptor::SESSION_PATH ) == port)
427  break;
428  ++nr;
429  }
430  }
431 
432  config += boost::str(boost::format(" MIDIPORT %s %d\n")
433  % sName.c_str()
434  % nr);
435 
436  break;
437  }
438 
439  case DTMidiFile:
440  config += boost::str(boost::format(" MIDIFILE %s\n") % sName.c_str());
441 
442  break;
443 
444  case DTNotSet:
445  UNREACHABLE;
446 
447  break;
448  }
449 
450  // Routen schreiben
451  routeListType & routes = (*In)->GetRoutes();
452  for (routeListType::iterator R = routes.begin();
453  R!= routes.end(); R++) {
454  Device * dev = (*R)->GetOutputDevice().get();
455  int OutNr;
456  OutNr = (dev ? dev->get_routefile_id(): -1);
457  config += " " + RTName[(*R)->GetType()] +
458  boost::str(boost::format(" %d %d %d %d %d %d %d %d\n")
459  % (*R)->GetInputFrom()
460  % (*R)->GetInputTo()
461  % ((*R)->GetBox()?
462  (*R)->GetBox()->get_routefile_id():
463  NoBox)
464  % (*R)->GetActive()
465  % OutNr
466  % (*R)->GetOutputFrom()
467  % (*R)->GetOutputTo()
468  % ((*R)->OutputAvoidDrumChannel() ? 1 : 0));
469  }
470  }
471 
472  DEBUGLOG2(routing,("WriteRoutes: %s"), (config.c_str()));
473  }
#define string
#define STUB
Definition: debug.h:304
std::string str(T obj)
Definition: Defs.h:131
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:841
const std::string RTName[]
Definition: Route.cpp:49
int GetBendingRange() const
Definition: midicmn.h:560
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:839
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1020
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1018
#define DEBUGLOG2(level,...)
Definition: debug.h:295
TRouteClass< InputDevice, OutputDevice, Box >::routeListType routeListType
Definition: Route.h:550
int get_routefile_id() const
Definition: Device.h:613
rtmidi::MidiIn * rtmidiin
Definition: DevMidi.cpp:611
#define UNREACHABLE
Definition: debug.h:308

◆ SaveRoutes() [2/3]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::SaveRoutes ( tree_storage config)
static

Save the current routes in a tree storage.

This function saves all routes in a tree based storage. config (tree_storage *) storage driver to use for saving.

Definiert in Zeile 227 der Datei Route.cpp.

228  {
229 #ifdef DEBUG
230  std::string oldpath = config.GetPath();
231 #endif
232  config.toLeaf("Routes");
233 
234  for (typename TRouteClass<I, O>::routeListType::iterator
235  route = routeList.begin();
236  route != routeList.end(); route++) {
237  config.toLeaf(("Route"),(*route)->get_routefile_id());
238  (*route) -> Save (config);
239  config.toParent();
240  }
241 
242  config.toParent();
243  mutASSERT(oldpath == config.GetPath());
244  }
#define string
mutabor::Route route
static routeListType routeList
Definition: Route.h:475
mutASSERT(p.get_intervals==cmp)
virtual void Save(tree_storage &config)
Write the route settings into a tree based configuration.
Definition: Route.cpp:71

◆ SaveRoutes() [3/3]

static void mutabor::RouteFactory::SaveRoutes ( tree_storage config)
inlinestatic

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 672 der Datei Route.h.

Benutzt __attribute__() und box.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteSave() und SaveRoutes().

672  {
673  if (factory)
674  factory->DoSaveRoutes(config);
675  else
676  BOOST_THROW_EXCEPTION( RouteFactoryNotSet());
677  // UNREACHABLECT(RouteFactory);
678  }
virtual void DoSaveRoutes(tree_storage &config) const
write the routes to the configuration
Definition: Route.cpp:586
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:748

◆ scoped_watchdog()

mutabor::BoxClass::scoped_watchdog::scoped_watchdog ( BoxClass b)
inline

Definiert in Zeile 802 der Datei Box.h.

802  :BoxLock(b) {
803  ScopedLock(box->logic_timing_mutex);
804  box->logic_timing = 0;
805  }
BoxLock(BoxClass *b)
Definition: Box.h:790
ScopedLock(mutex_type &m)
Definition: thread.h:259

◆ ScopedBox() [1/2]

mutabor::ScopedBox::ScopedBox ( BoxClass rhs)
inline

Definiert in Zeile 988 der Datei Box.h.

988 :Box(rhs) {}
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129

◆ ScopedBox() [2/2]

mutabor::ScopedBox::ScopedBox ( const Box rhs)
inline

Definiert in Zeile 989 der Datei Box.h.

989 :Box(rhs) {}
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129

◆ SepPos()

size_t SepPos ( )
inline

Definiert in Zeile 40 der Datei GSP.cpp.

Benutzt Sep.

41 {
42  size_t a = (Sep.length());
43  return a;
44 }
std::string Sep
Definition: GSP.cpp:39

◆ set_bend()

void mutabor::ChannelData::set_bend ( int  b)
inline

◆ set_callback()

mutabor::BoxClass::set_callback::set_callback ( BoxClass b,
CompileCallback callback 
)
inline

Definiert in Zeile 830 der Datei Box.h.

Benutzt mutabor::BoxClass::current_compile_callback.

831  :box(b) {
832  box->current_compile_callback = callback;
833  }
CompileCallback * current_compile_callback
Definition: Box.h:838

◆ set_controller()

int mutabor::ChannelData::set_controller ( size_t  number,
int  data 
)
inline

Definiert in Zeile 159 der Datei Device.h.

Benutzt mutabor::midi::DATA_BUTTON_DECREMENT, mutabor::midi::DATA_BUTTON_INCREMENT, mutabor::midi::DATA_ENTRY_COARSE, mutabor::midi::DATA_ENTRY_FINE, DEBUGLOG, mutabor::midi::FIRST_NRPN, mutabor::midi::FIRST_RPN, mutabor::midi::NON_REGISTERED_PARAMETER_COARSE, mutabor::midi::NON_REGISTERED_PARAMETER_FINE, mutabor::midi::REGISTERED_PARAMETER_COARSE und mutabor::midi::REGISTERED_PARAMETER_FINE.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::CopyProgramChange(), mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_Controller(), mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_NoteOn(), mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_Open(), mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_SendBendingRange(), mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_UpdateControllers(), mutabor::ChannelData::MidiReset() und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::OutputParameter().

159  {
160 
161  if (controller.size() <= number)
162  controller.resize(number +1,-1);
163  int retval = controller[number];
164  int param = -1;
165  DEBUGLOG(midiio,("ctrl: %d, %d => %d"),(int)number,(int)retval,(int)data);
166  controller[number] = data;
167 
168  // we allow to set a controller to an udefined state.
169  if (data < 0) return retval;
170 
171  switch (number) {
174  data_is_rpn = false;
175  break;
178  data_is_rpn = true;
179  break;
184  if (!data_is_rpn
189  param = midi::FIRST_NRPN
192  } else if (data_is_rpn
197  param = midi::FIRST_RPN
200  }
201  if (param != -1) {
202  if (controller.size() <= (size_t) param)
203  controller.resize(param+1,-1);
204  switch (number) {
206  if (!(controller[param]&0x80)) {
207  // skip the sign bit for lsb
208  int value = controller[param];
209  value++;
210  if (value & 0x80) {
211  if (!(value & 0x8000))
212  value += 0x100;
213  value &= ~((int)0xff);
214  }
215  controller[param] = value;
216  }
217  break;
219  if (!(controller[param]&0x80)) {
220  int value = controller[param];
221  bool hasmsb = !(value & 0x8000);
222  value--;
223  if (value & 0x80) {
224  if (!hasmsb) {
225  value |= 0xFF00;
226  }
227  value &= ~((int)0x80);
228  }
229  }
230  break;
232  int value = (controller[param] & 0xFF) | ((data & 0xFF) << 8);
233  if (controller[param] != value)
234  set_controller(param,value);
235  }
236  break;
237  case midi::DATA_ENTRY_FINE: {
238  int value = (controller[param] & 0xff00)| (data & 0xff);
239  if (controller[param] != value)
240  set_controller(param,value);
241  }
242  break;
243  }
244  }
245  break;
246  }
247 
248 
249 
250  bool found = false;
251  size_t index;
252  for (size_t i = 0; i < (looped?controller.size():first_unchanged);i++) {
253  if (controller_changed[i] == (int)number) {
254  controller_vector :: iterator beg = controller_changed.begin();
255  std::rotate(beg + i,beg+i+1 ,beg +first_unchanged);
256  found = true;
257  index = first_unchanged-1;
258  break;
259  }
260  }
261  if (!found)
262  index = first_unchanged++;
263 
264  controller_changed[index] = number;
265 
266  return retval;
267  }
size_t first_unchanged
Definition: Device.h:497
#define DEBUGLOG(level,...)
Definition: debug.h:294
controller_vector controller
Definition: Device.h:495
controller_vector controller_changed
Definition: Device.h:496
int set_controller(size_t number, int data)
Definition: Device.h:159

◆ set_routefile_id() [1/2]

void mutabor::BoxClass::set_routefile_id ( int  id)
virtual

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 100 der Datei Box.cpp.

Benutzt box, mutASSERT() und mutabor::NewBox.

Wird benutzt von mutabor::BoxClass::BoxClass() und mutabor::BoxFactory::LoadBoxes().

100  {
101  BoxLock lock(this);
102 
103  if (id == NewBox) {
104  id = nextboxid++;
105  } else if (id >= nextboxid)
106  nextboxid = id + 1;
107  routefile_id = id;
108  mutASSERT(box);
109  if (!box) return;
110  box->id = routefile_id;
111  }
mutabor_box_type * box
Definition: Box.h:816
mutASSERT(p.get_intervals==cmp)
static int nextboxid
Definition: Box.h:812
int routefile_id
Definition: Box.h:818

◆ set_routefile_id() [2/2]

void mutabor::Device::set_routefile_id ( int  id)
inlineprotected

Definiert in Zeile 674 der Datei Device.h.

Wird benutzt von mutabor::DeviceFactory::LoadInputDevices().

674  {
675  routefile_id = id;
676  }
int routefile_id
Definition: Device.h:651

◆ SetActive()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetActive ( bool  active)
inline

Definiert in Zeile 326 der Datei Route.h.

326  {
327  Active = active;
328  }

◆ SetBox() [1/2]

virtual void mutabor::BoxClass::ChangedCallback::SetBox ( Box b)
inlinevirtual

Definiert in Zeile 240 der Datei Box.h.

240  {
241  if (b == box) return;
242  if (box)
243  box->Unregister(this);
244  box = b;
245  if (box)
246  box->Register(this);
247  }

◆ SetBox() [2/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual void mutabor::TRouteClass< I, O, B >::SetBox ( Box  b)
inlinevirtual

Definiert in Zeile 334 der Datei Route.h.

334  {
335  box = b;
336  }

◆ SetBoxId()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetBoxId ( int  Id)
inline

Definiert in Zeile 306 der Datei Route.h.

306  {
307  boxid = Id;
308  }

◆ SetDeviceId() [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetDeviceId ( int  Id,
 
)
inline

Definiert in Zeile 299 der Datei Route.h.

299  {
300  inputid = Id;
301  }

◆ SetDeviceId() [2/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetDeviceId ( int  Id,
 
)
inline

Definiert in Zeile 303 der Datei Route.h.

303  {
304  outputid = Id;
305  }

◆ SetInputFrom()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetInputFrom ( int  i)
inline

Definiert in Zeile 354 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load() und mutabor::InputMidiFile::Load().

354  {
355  IFrom = i;
356  }

◆ SetInputTo()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetInputTo ( int  i)
inline

Definiert in Zeile 370 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load() und mutabor::InputMidiFile::Load().

370  {
371  ITo = i;
372  }

◆ SetLine()

virtual void mutabor::BoxClass::CompileCallback::SetLine ( int  number)
pure virtual

◆ SetLogic()

void mutabor::BoxClass::SetLogic ( Box  b)
inline

Definiert in Zeile 639 der Datei Box.h.

Benutzt mutabor_set_logic() und string.

Wird benutzt von mutaborGUI::BoxData::BoxData().

639  {
641  }
void mutabor_set_logic(mutabor_box_type *box, struct mutabor_logic_parsed *logic)
Definition: box.cpp:52
mutabor_box_type * box
Definition: Box.h:816
struct mutabor_logic_parsed * file
Definition: box.h:162

◆ SetMessage()

virtual void mutabor::BoxClass::CompileCallback::SetMessage ( std::string  message)
pure virtual

◆ SetMode()

virtual void mutabor::Device::SetMode ( MutaborModeType  m)
inlinevirtual

Definiert in Zeile 579 der Datei Device.h.

579 { Mode = m; }
enum MutaborModeType Mode
Definition: Device.h:655

◆ SetName()

virtual void mutabor::Device::SetName ( const std::string s)
inlinevirtual

Erneute Implementation in mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::CommonFileInputDevice, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 594 der Datei Device.h.

594  {
595  Name = s;
596  }
std::string Name
Definition: Device.h:652

◆ SetNoteOff()

int ChordNote::SetNoteOff ( GisToken note)

Definiert in Zeile 837 der Datei GIS_Head.cpp.

Benutzt CmpNote(), CNNoteOn und mutabor::CurrentTime.

838 {
839 
840  if ( (Status & CNNoteOn) && CmpNote(*Cursor, note) )
841  {
842  ((GisNote*)*Cursor)->Duration = CurrentTime;
843  Cursor = &((*Cursor)->Next);
844  CurrentTime = frac(0,1);
845  Status -= CNNoteOn;
846  Boss->NoteOn--;
847  return 1;
848  }
849 
850  if ( Next ) return Next->SetNoteOff(note);
851 
852  return 0;
853 }
GisToken ** Cursor
Definition: GIS_Head.h:437
GisWriteHead * Boss
Definition: GIS_Head.h:438
char Status
Definition: GIS_Head.h:443
char NoteOn
Definition: GIS_Head.h:326
ChordNote * Next
Definition: GIS_Head.h:435
Definition: GIS.h:423
int CmpNote(GisToken *note1, GisToken *note2)
Definition: GIS_Head.cpp:768
#define CNNoteOn
Definition: GIS_Head.h:425
mutabor::frac CurrentTime
Definition: GIS_Head.h:439
int SetNoteOff(GisToken *note)
Definition: GIS_Head.cpp:837

◆ SetNoteOn()

void ChordNote::SetNoteOn ( GisToken note)

Definiert in Zeile 829 der Datei GIS_Head.cpp.

Benutzt CNNoteOn und NOTE.

Wird benutzt von GisWriteHead::ProceedGis().

830 {
831  *Cursor = new GisNote(NOTE->Name, NOTE->Accedentials, NOTE->Octave,
832  frac(0, 1), NOTE->Sep, 0);
833  Status += CNNoteOn;
834  Boss->NoteOn++;
835 }
GisToken ** Cursor
Definition: GIS_Head.h:437
#define NOTE
Definition: GIS_Head.cpp:828
GisWriteHead * Boss
Definition: GIS_Head.h:438
char Status
Definition: GIS_Head.h:443
char NoteOn
Definition: GIS_Head.h:326
Definition: GIS.h:423
#define CNNoteOn
Definition: GIS_Head.h:425

◆ SetOutputFrom()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetOutputFrom ( int  o)
inline

Definiert in Zeile 362 der Datei Route.h.

Wird benutzt von mutabor::OutputMidiPort::Load() und mutabor::OutputMidiFile::Load().

362  {
363  OFrom = o;
364  }

◆ SetOutputTo()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetOutputTo ( int  o)
inline

Definiert in Zeile 378 der Datei Route.h.

Wird benutzt von mutabor::OutputMidiPort::Load() und mutabor::OutputMidiFile::Load().

378  {
379  OTo = o;
380  }

◆ SetStatus() [1/2]

virtual void mutabor::BoxClass::CompileCallback::SetStatus ( std::string  status)
pure virtual

◆ SetStatus() [2/2]

virtual void mutabor::BoxClass::CompileCallback::SetStatus ( int  logics,
int  tones,
int  tunings,
int  tone_systems,
int  intervals,
int  characters 
)
pure virtual

◆ SetType()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetType ( RouteType  type)
inline

Definiert in Zeile 342 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load().

342  {
343  Type = type;
344  }
RouteType Type
Definition: Route.h:483

◆ setUp() [1/3]

void CommonMidiOutputTest::setUp ( )

Definiert in Zeile 91 der Datei midicmnTest.cpp.

Benutzt box, mutabor::Box0, mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), midicmnOutputDevice::midicmnOutputDevice(), out, route und mutabor::CurrentTimer::UseRealtime().

92 {
93 // change DEBUGA to DEBUG in case you need the debug output
94 #ifdef DEBUG
95 // debugFlags::flags.timer = true;
96 // debugFlags::flags.midiio = true;
97 #endif
98  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
99  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
100  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
101  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
104  connect(route, box);
105 
107  out = new midicmnOutputDevice(("Test"));
108  guard = out;
109 
110  connect(route, guard);
111  route->SetOutputFrom (0);
112  route->SetOutputTo (15);
113  route->OutputAvoidDrumChannel (true);
114 }
mutabor::Route route
Definition: midicmnTest.h:140
static const listtype & GetBoxList()
Definition: Box.h:355
static const routeListType & GetRouteList()
Definition: Route.h:407
midicmnOutputDevice * out
Definition: midicmnTest.h:139
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
mutabor::Box box
Definition: midicmnTest.h:141
mutabor::OutputDevice guard
Definition: midicmnTest.h:138
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
static const listtype & GetDeviceList()
Definition: Device.h:755
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ setUp() [2/3]

void CommonMidiInputTest::setUp ( )

Definiert in Zeile 598 der Datei midicmnTest.cpp.

Benutzt box, mutabor::Box0, mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), in, midicmnOutputDevice::midicmnOutputDevice(), out, outguard, route und mutabor::CurrentTimer::UseRealtime().

599 {
600 // change DEBUGA to DEBUG in case you need the debug input
601 #ifdef DEBUG
602 // mutabor::mutabor_debug_flags.timer = true;
603 // mutabor::mutabor_debug_flags.midiio = true;
604 #endif
605  // std::clog << "Running setUp()" << std::endl;
606 
607  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
608  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
609  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
610  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
611 
614  connect(route, box);
615 
617  in = new midicmnInputDevice(("Test"));
618  guard = in;
619  out = new midicmnOutputDevice(("Test"));
620  outguard = out;
621 
624  route->SetOutputFrom (0);
625  route->SetOutputTo (15);
626  route->OutputAvoidDrumChannel (true);
627 }
midicmnInputDevice * in
Definition: midicmnTest.h:230
mutabor::OutputDevice outguard
Definition: midicmnTest.h:228
static const listtype & GetBoxList()
Definition: Box.h:355
static const routeListType & GetRouteList()
Definition: Route.h:407
mutabor::InputDevice guard
Definition: midicmnTest.h:227
midicmnOutputDevice * out
Definition: midicmnTest.h:229
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
mutabor::Route route
Definition: midicmnTest.h:231
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
static const listtype & GetDeviceList()
Definition: Device.h:755
CurrentTimer CurrentTime
Definition: timing.cpp:43
mutabor::Box box
Definition: midicmnTest.h:232
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ setUp() [3/3]

void OutputMidiFileTest::setUp ( )

Definiert in Zeile 4814 der Datei DevMidFTest.cpp.

Benutzt box, mutabor::Box0, mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::DeviceFactory::CreateOutput(), mutabor::CurrentTime, mutabor::DTMidiFile, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), mutabor::OutputMidiFile::SetName(), size und mutabor::CurrentTimer::UseRealtime().

4815 {
4816 // change DEBUGA to DEBUG in case you need the debug output
4817 #ifdef DEBUGA
4818 // mutabor_debug_flags.timer = true;
4819 // mutabor_debug_flags.midiio = true;
4820 // mutabor_debug_flags.midifile = true;
4821 #else
4822 #ifdef DEBUG
4823 // mutabor_debug_flags.timer = false;
4824 // mutabor_debug_flags.midiio = false;
4825 // mutabor_debug_flags.midifile = false;
4826 #endif
4827 #endif
4828 // std::clog << "Running setUp()" << std::endl;
4829 
4830  // input device is already configured
4831  CPPUNIT_ASSERT(!(mutabor::InputDeviceClass::GetDeviceList().size() == 1));
4832  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
4833  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
4834  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
4835 
4838  connect(route, box);
4839 
4842  out = static_cast<mutabor::OutputMidiFile *>(guard.get());
4843  out->SetName((DESTDIR "/test_output.mid"));
4844  out->SetBendingRange(2);
4845  //out = new midicmnOutputDevice(3,("Test"));
4846 
4847  connect(route, guard);
4848  route->SetOutputFrom (0);
4849  route->SetOutputTo (15);
4850  route->OutputAvoidDrumChannel (true);
4851 }
static OutputDevice CreateOutput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1389
static const listtype & GetBoxList()
Definition: Box.h:355
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
mutabor::OutputDevice guard
Definition: DevMidFTest.h:243
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:244
mutabor::Route route
Definition: DevMidFTest.h:245
virtual void SetName(const std::string &s)
Definition: DevMidF.h:847
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
static const listtype & GetDeviceList()
Definition: Device.h:755
CurrentTimer CurrentTime
Definition: timing.cpp:43
mutabor::Box box
Definition: DevMidFTest.h:246
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ setUserData() [1/2]

template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::setUserData ( void *  data)
protectedvirtual

Definiert in Zeile 128 der Datei Route.cpp.

129  {
130  userdata = data;
131  }

◆ setUserData() [2/2]

virtual void mutabor::Device::setUserData ( void *  data)
inlineprotectedvirtual

Definiert in Zeile 669 der Datei Device.h.

669  {
670  userdata = data;
671  }
void * userdata
Definition: Device.h:679

◆ SilenceKeys()

void mutabor::InputDeviceClass::SilenceKeys ( bool  remove)
inline

Definiert in Zeile 1314 der Datei Device.h.

1314  {
1315  ScopedLock<InputDeviceClass> lock(*this);
1316  DoSilenceKeys(remove);
1317  }
void DoSilenceKeys(bool remove)
Definition: Device.cpp:351

◆ StartSep()

int StartSep ( )

Definiert in Zeile 547 der Datei GIS.cpp.

Benutzt DEBUGLOG2, GisToken::GisToken() und GisToken::Sep.

Wird benutzt von GspParse() und GisComma::ToString().

548 {
549  DEBUGLOG2(gmnfile,("saving Sep %s"),Sep.c_str());
550  *Current = new GisToken(Sep, 0);
551  Current = &((*Current)->Next);
552  return 0;
553 }
Definition: GIS.h:116
std::string Sep
Definition: GSP.cpp:39
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ Stop() [1/2]

virtual void mutabor::Device::Stop ( )
inlinevirtual

◆ Stop() [2/2]

virtual void mutabor::InputDeviceClass::Stop ( )
inlinevirtual

Stop playback or recording of the device.

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, testCommonFileDeviceTimer, testCommonFileDeviceTimer, myDevice und myDevice.

Definiert in Zeile 1133 der Datei Device.h.

Benutzt DEFAULT_PANIC, mutabor::DeviceStop und mutabor::Panic().

1133  {
1135  Mode = DeviceStop;
1136  }
enum MutaborModeType Mode
Definition: Device.h:655
#define DEFAULT_PANIC
Definition: MidiKern.h:322
void Panic(int type)
reset the device if requested
Definition: Device.cpp:429

◆ StopAll() [1/2]

void mutabor::BoxClass::StopAll ( )
static

Stop all boxes.

This resets the action traces of all boxes.

Zu beachten
Code should be taken from Stop()

Definiert in Zeile 547 der Datei Box.cpp.

Benutzt mutabor::CurrentTime, mutabor::InClose(), mutabor::OutClose() und mutabor::CurrentTimer::Stop().

Wird benutzt von mutaborGUI::MutFrame::DoStop().

547  {
551  CloseAll();
552  }
void OutClose()
Definition: Device.cpp:698
void Stop()
Dummy function for stopping the timer.
Definition: timing.h:710
void InClose()
Definition: Device.cpp:734
static void CloseAll()
Close all boxes.
Definition: Box.cpp:519
CurrentTimer CurrentTime
Definition: timing.cpp:43

◆ StopAll() [2/2]

static void mutabor::InputDeviceClass::StopAll ( )
inlinestatic

Stop all inupt devices.

Definiert in Zeile 1163 der Datei Device.h.

Benutzt mutabor::DevicePause und mutabor::DevicePlay.

Wird benutzt von mutabor::InputMidiPort::Proceed().

1163  {
1164  for (listtype::iterator i = deviceList.begin();
1165  i != deviceList.end(); ++i) {
1166  if ( (*i)->GetMode() == DevicePlay
1167  || (*i)->GetMode() == DevicePause ) {
1168  (*i)->Stop();
1169  }
1170  }
1171  last_was_stop = true;
1172  }
static bool last_was_stop
Definition: Device.h:1338

◆ StrCmp()

int StrCmp ( const std::string s1,
const std::string s2 
)
inline

Definiert in Zeile 748 der Datei GIS_Head.cpp.

Wird benutzt von CmpNote().

749 {
750  return s1.compare(s2);
751 }

◆ StreamToHex()

std::string StreamToHex ( std::istream &  buf)

Definiert in Zeile 380 der Datei debug.cpp.

Wird benutzt von OutputMidiFileTest::CheckOut() und InputMidiFileTest::testControllerPlay().

381 {
382  std::ostringstream retval;
383  if (buf.bad())
384  return "";
385 
386  buf.seekg(0);
387 
388  int tmpchar = buf.get();
389  for (size_t i = 1 ; !buf.eof() ; i++) {
390  retval << " "
391  << std::hex << std::setfill('0')
392  << std::setw (2) << tmpchar
393  << " ";
394 
395  if (32 <= tmpchar && tmpchar < 127)
396  retval << (char)tmpchar;
397  else
398  retval << "·";
399 
400  tmpchar = buf.get();
401  if (buf.fail()) break;
402 
403  if (!(i % 16)) {
404  retval << "\n";
405  }
406  else if (!(i % 8)) {
407  retval << " ";
408  }
409  }
410  retval << "\n";
411  return retval.str();
412 }

◆ Tag()

int Tag ( const std::string tagName)

Definiert in Zeile 726 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, GisToken::Sep, TagMode, TagName und TagSep.

Wird benutzt von BeginRange(), BuildTag(), mutaborGUI::MutLogicWnd::CmMutTag(), DoParse(), EndRange(), ReadTag() und GisComma::ToString().

727 {
728  DEBUGLOG2(gmnfile,("\\%s"),tagName.c_str());
729 
730  if ( TagMode ) BuildTag();
731 
732  TagName = tagName;
733 
734  TagSep = Sep;
735 
736  TagMode = 1;
737 
738  return 0;
739 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
int BuildTag()
Definition: GIS.cpp:530
std::string TagSep
Definition: GIS.cpp:111
std::string TagName
Definition: GIS.cpp:110
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ TagParaInt()

int TagParaInt ( long  i)

Definiert in Zeile 741 der Datei GIS.cpp.

Benutzt DEBUGLOG2, GisToken::Next, p() und GisToken::Sep.

Wird benutzt von ReadParaNumber() und GisComma::ToString().

742 {
743  DEBUGLOG2(gmnfile,("ParaInt: %ld"),i);
744  GisParaInt *p = new GisParaInt(i, Sep);
745 
746  if ( LastPara )
747  LastPara->Next = p;
748  else
749  Para = p;
750 
751  LastPara = p;
752 
753  return 0;
754 }
std::string Sep
Definition: GSP.cpp:39
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
GisToken * LastPara
Definition: GIS.cpp:112
#define DEBUGLOG2(level,...)
Definition: debug.h:295
string_parser p("\onstant tone system\0")

◆ TagParaReal()

int TagParaReal ( double  x)

Definiert in Zeile 756 der Datei GIS.cpp.

Benutzt DEBUGLOG2, GisToken::Next, p() und GisToken::Sep.

Wird benutzt von ReadParaNumber() und GisComma::ToString().

757 {
758  DEBUGLOG2(gmnfile,("ParaReal: %g"), x);
759  GisParaReal *p = new GisParaReal(x, Sep, 0);
760 
761  if ( LastPara )
762  LastPara->Next = p;
763  else
764  Para = p;
765 
766  LastPara = p;
767 
768  return 0;
769 }
std::string Sep
Definition: GSP.cpp:39
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
GisToken * LastPara
Definition: GIS.cpp:112
#define DEBUGLOG2(level,...)
Definition: debug.h:295
string_parser p("\onstant tone system\0")

◆ TagParaStr()

int TagParaStr ( const std::string s)

Definiert in Zeile 771 der Datei GIS.cpp.

Benutzt DEBUGLOG2, GisToken::Next, p() und GisToken::Sep.

Wird benutzt von ReadParaStr() und GisComma::ToString().

772 {
773  DEBUGLOG2(gmnfile,("ParaStr: %s"), s.c_str());
774  GisParaStr *p = new GisParaStr(s, Sep, 0);
775 
776  if ( LastPara )
777  LastPara->Next = p;
778  else
779  Para = p;
780 
781  LastPara = p;
782 
783  return 0;
784 }
std::string Sep
Definition: GSP.cpp:39
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
GisToken * LastPara
Definition: GIS.cpp:112
#define DEBUGLOG2(level,...)
Definition: debug.h:295
string_parser p("\onstant tone system\0")

◆ takesep()

std::string& takesep ( )
inline

Definiert in Zeile 181 der Datei GSP.cpp.

Benutzt CurrentLine, CurrentPos, DEBUGLOG2 und Sep.

182 {
183  Sep += CurrentLine[CurrentPos++];
184  DEBUGLOG2(other,("New Sep: %s"), Sep.c_str());
185  return Sep;
186 }
std::string Sep
Definition: GSP.cpp:39
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define DEBUGLOG2(level,...)
Definition: debug.h:295

◆ tearDown() [1/3]

void CommonMidiOutputTest::tearDown ( )

Definiert in Zeile 116 der Datei midicmnTest.cpp.

Benutzt box, mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::Destroy(), mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), out und route.

117 {
118  guard->Destroy();
119  route->Destroy();
120  out = NULL;
121  guard.reset();
122  route.reset();
123  box -> Destroy();
124  box.reset();
125 
126  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
127  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
128  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
129  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
130 #ifdef DEBUG
131 // mutabor::mutabor_debug_flags.timer = false;
132 // mutabor::mutabor_debug_flags.midiio = false;
133 #endif
134 }
mutabor::Route route
Definition: midicmnTest.h:140
static const listtype & GetBoxList()
Definition: Box.h:355
static const routeListType & GetRouteList()
Definition: Route.h:407
midicmnOutputDevice * out
Definition: midicmnTest.h:139
mutabor::Box box
Definition: midicmnTest.h:141
mutabor::OutputDevice guard
Definition: midicmnTest.h:138
static const listtype & GetDeviceList()
Definition: Device.h:755

◆ tearDown() [2/3]

void CommonMidiInputTest::tearDown ( )

Definiert in Zeile 629 der Datei midicmnTest.cpp.

Benutzt box, mutabor::CommonTypedDeviceAPI< T, P, L >::Destroy(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::Destroy(), in, mutabor::mutabor_debug_flags, out und route.

630 {
631 
632  if (in) {
633  in->Destroy();
634  }
635  if(out)
636  out->Destroy();
637  if(route)
638  route->Destroy();
639  if (box)
640  box -> Destroy();
641  in = NULL;
642  out = NULL;
643  guard.reset();
644  route.reset();
645  box.reset();
646 #ifdef DEBUG
647 // mutabor::mutabor_debug_flags.timer = false;
648  mutabor::mutabor_debug_flags.midiio = false;
649 #endif
650 }
midicmnInputDevice * in
Definition: midicmnTest.h:230
mutabor::InputDevice guard
Definition: midicmnTest.h:227
virtual void Destroy()
Destroy the current object.
midicmnOutputDevice * out
Definition: midicmnTest.h:229
struct mutabor_debug_flagtype mutabor_debug_flags
Definition: scl2mut.cpp:41
mutabor::Route route
Definition: midicmnTest.h:231
mutabor::Box box
Definition: midicmnTest.h:232

◆ tearDown() [3/3]

void OutputMidiFileTest::tearDown ( )

Definiert in Zeile 4853 der Datei DevMidFTest.cpp.

Benutzt box, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), isDebugFlag, mutabor::mutabor_debug_flags, out und route.

4854 {
4855 #ifdef DEBUG
4856  isDebugFlag(timer) = false;
4857  mutabor::mutabor_debug_flags.midifile = false;
4858 #endif
4859  if (out)
4860  out -> Destroy();
4861  out = NULL;
4862  guard.reset();
4863  route -> Destroy();
4864  route.reset();
4865  box -> Destroy();
4866  box.reset();
4867 
4868  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
4869  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
4870  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
4871  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
4872 }
static const listtype & GetBoxList()
Definition: Box.h:355
static const routeListType & GetRouteList()
Definition: Route.h:407
mutabor::OutputDevice guard
Definition: DevMidFTest.h:243
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:244
mutabor::Route route
Definition: DevMidFTest.h:245
struct mutabor_debug_flagtype mutabor_debug_flags
Definition: scl2mut.cpp:41
#define isDebugFlag(level)
Definition: debug.h:186
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
Definition: DevMidFTest.h:246

◆ testAfterTouch()

void InputMidiFileTest::testAfterTouch ( )

Definiert in Zeile 5673 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::initialize_box_data(), name, out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size, string und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testPlayMidi().

5674 {
5675 #ifdef DEBUG
5676 // mutabor::mutabor_debug_flags.timer = true;
5677 // mutabor::mutabor_debug_flags.midiio = true;
5678 // mutabor::mutabor_debug_flags.midifile = true;
5679 #endif
5680 
5681  // input device is set up during setUp
5682  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
5683  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
5684  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
5685  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
5686 
5689  mutabor::ScopedBox box(NULL);
5692 
5695  connect(route,box);
5697 
5698  std::string name = srcdir;
5699  name += ("/midiin.mut");
5700 
5701 
5702  std::ifstream file(name.c_str());
5703  CPPUNIT_ASSERT(file.is_open());
5704  file.seekg(0, std::ios::end);
5705  std::streampos length = file.tellg();
5706  file.seekg(0, std::ios::beg);
5707  char * logic_string = (char *) malloc((size_t)length+1);
5708  CPPUNIT_ASSERT(file.read(logic_string, length).gcount() == length);
5709  logic_string[length] = 0;
5710 
5711  MyCompileCallback callback;
5712  CPPUNIT_ASSERT(box->Compile(&callback, logic_string));
5713 
5714  free(logic_string);
5715  logic_string = NULL;
5716 
5717  route->SetActive(true);
5718 
5719 
5721  out = new midicmnOutputDevice(("Test"));
5722  out->SetBendingRange(2);
5723  //out = new midicmnOutputDevice(3,("Test"));
5724  guard = out;
5725 
5726  connect(route,guard);
5727  route->SetOutputFrom (0);
5728  route->SetOutputTo (15);
5729  route->OutputAvoidDrumChannel (true);
5730 
5731  connect(route, in);
5732 
5733  CPPUNIT_ASSERT( in );
5734  in -> SetName(SRCDIR "/aftertouch.mid");
5735 
5736 
5737  // First check: Input device provides the correct delta times
5739  mutabor::CurrentTime = mutabor::microseconds(0);
5740 
5741 // in -> Play(wxTHREAD_JOINABLE);
5743 
5744  CPPUNIT_ASSERT(out->Check((
5745 "0 Opened...\n"
5746 "0 0: e0 00 40\n"
5747 "0 0: b0 7a 00\n"
5748 "0 0: b0 7d 00\n"
5749 "0 0: b0 7f 00\n"
5750 "0 0: b0 65 00\n"
5751 "0 0: b0 64 00\n"
5752 "0 0: b0 06 02\n"
5753 "0 0: b0 26 00\n"
5754 "0 1: e1 00 40\n"
5755 "0 1: b1 7a 00\n"
5756 "0 1: b1 7d 00\n"
5757 "0 1: b1 7f 00\n"
5758 "0 1: b1 65 00\n"
5759 "0 1: b1 64 00\n"
5760 "0 1: b1 06 02\n"
5761 "0 1: b1 26 00\n"
5762 "0 2: e2 00 40\n"
5763 "0 2: b2 7a 00\n"
5764 "0 2: b2 7d 00\n"
5765 "0 2: b2 7f 00\n"
5766 "0 2: b2 65 00\n"
5767 "0 2: b2 64 00\n"
5768 "0 2: b2 06 02\n"
5769 "0 2: b2 26 00\n"
5770 "0 3: e3 00 40\n"
5771 "0 3: b3 7a 00\n"
5772 "0 3: b3 7d 00\n"
5773 "0 3: b3 7f 00\n"
5774 "0 3: b3 65 00\n"
5775 "0 3: b3 64 00\n"
5776 "0 3: b3 06 02\n"
5777 "0 3: b3 26 00\n"
5778 "0 4: e4 00 40\n"
5779 "0 4: b4 7a 00\n"
5780 "0 4: b4 7d 00\n"
5781 "0 4: b4 7f 00\n"
5782 "0 4: b4 65 00\n"
5783 "0 4: b4 64 00\n"
5784 "0 4: b4 06 02\n"
5785 "0 4: b4 26 00\n"
5786 "0 5: e5 00 40\n"
5787 "0 5: b5 7a 00\n"
5788 "0 5: b5 7d 00\n"
5789 "0 5: b5 7f 00\n"
5790 "0 5: b5 65 00\n"
5791 "0 5: b5 64 00\n"
5792 "0 5: b5 06 02\n"
5793 "0 5: b5 26 00\n"
5794 "0 6: e6 00 40\n"
5795 "0 6: b6 7a 00\n"
5796 "0 6: b6 7d 00\n"
5797 "0 6: b6 7f 00\n"
5798 "0 6: b6 65 00\n"
5799 "0 6: b6 64 00\n"
5800 "0 6: b6 06 02\n"
5801 "0 6: b6 26 00\n"
5802 "0 7: e7 00 40\n"
5803 "0 7: b7 7a 00\n"
5804 "0 7: b7 7d 00\n"
5805 "0 7: b7 7f 00\n"
5806 "0 7: b7 65 00\n"
5807 "0 7: b7 64 00\n"
5808 "0 7: b7 06 02\n"
5809 "0 7: b7 26 00\n"
5810 "0 8: e8 00 40\n"
5811 "0 8: b8 7a 00\n"
5812 "0 8: b8 7d 00\n"
5813 "0 8: b8 7f 00\n"
5814 "0 8: b8 65 00\n"
5815 "0 8: b8 64 00\n"
5816 "0 8: b8 06 02\n"
5817 "0 8: b8 26 00\n"
5818 "0 9: e9 00 40\n"
5819 "0 9: b9 7a 00\n"
5820 "0 9: b9 7d 00\n"
5821 "0 9: b9 7f 00\n"
5822 "0 9: b9 65 00\n"
5823 "0 9: b9 64 00\n"
5824 "0 9: b9 06 02\n"
5825 "0 9: b9 26 00\n"
5826 "0 10: ea 00 40\n"
5827 "0 10: ba 7a 00\n"
5828 "0 10: ba 7d 00\n"
5829 "0 10: ba 7f 00\n"
5830 "0 10: ba 65 00\n"
5831 "0 10: ba 64 00\n"
5832 "0 10: ba 06 02\n"
5833 "0 10: ba 26 00\n"
5834 "0 11: eb 00 40\n"
5835 "0 11: bb 7a 00\n"
5836 "0 11: bb 7d 00\n"
5837 "0 11: bb 7f 00\n"
5838 "0 11: bb 65 00\n"
5839 "0 11: bb 64 00\n"
5840 "0 11: bb 06 02\n"
5841 "0 11: bb 26 00\n"
5842 "0 12: ec 00 40\n"
5843 "0 12: bc 7a 00\n"
5844 "0 12: bc 7d 00\n"
5845 "0 12: bc 7f 00\n"
5846 "0 12: bc 65 00\n"
5847 "0 12: bc 64 00\n"
5848 "0 12: bc 06 02\n"
5849 "0 12: bc 26 00\n"
5850 "0 13: ed 00 40\n"
5851 "0 13: bd 7a 00\n"
5852 "0 13: bd 7d 00\n"
5853 "0 13: bd 7f 00\n"
5854 "0 13: bd 65 00\n"
5855 "0 13: bd 64 00\n"
5856 "0 13: bd 06 02\n"
5857 "0 13: bd 26 00\n"
5858 "0 14: ee 00 40\n"
5859 "0 14: be 7a 00\n"
5860 "0 14: be 7d 00\n"
5861 "0 14: be 7f 00\n"
5862 "0 14: be 65 00\n"
5863 "0 14: be 64 00\n"
5864 "0 14: be 06 02\n"
5865 "0 14: be 26 00\n"
5866 "0 15: ef 00 40\n"
5867 "0 15: bf 7a 00\n"
5868 "0 15: bf 7d 00\n"
5869 "0 15: bf 7f 00\n"
5870 "0 15: bf 65 00\n"
5871 "0 15: bf 64 00\n"
5872 "0 15: bf 06 02\n"
5873 "0 15: bf 26 00\n"
5874 "0 0: 90 3c 7f\n"
5875 "1000 0: a0 3c 08\n"
5876 "200000 1: 91 3c 7f\n"
5877 "202000 0: d0 0c\n"
5878 "202000 1: d1 0c\n"
5879 "500000 0: 80 3c 40\n"
5880 "501000 1: d1 0d\n"
5881 "502000 1: a1 3c 0f\n"
5882 "540000 1: 81 3c 40\n"
5883 "546000 ...closed.\n"
5884 ),__LINE__,(__FILE__)));
5885 
5886 }
#define string
mutabor::Route route
mutabor::InputDevice in
Definition: DevMidFTest.h:85
void initialize_box_data()
Definition: Box.cpp:1107
const char * name
Definition: TabGen.cpp:59
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ testAllControllerOff()

void InputMidiFileTest::testAllControllerOff ( )

Definiert in Zeile 1500 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testPlayMidi().

1501 {
1502 #ifdef DEBUG
1503 // mutabor_debug_flags.timer = true;
1504 // mutabor_debug_flags.midiio = true;
1505 // mutabor_debug_flags.midifile = true;
1506 #endif
1507 
1508  // input device is set up during setUp
1509  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1510  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1511  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1512  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1513 
1516  mutabor::ScopedBox box(NULL);
1519 
1522  connect(route,box);
1523 
1525  out = new midicmnOutputDevice(("Test"));
1526  out->SetBendingRange(2);
1527  //out = new midicmnOutputDevice(3,("Test"));
1528  guard = out;
1529 
1530  connect(route,guard);
1531  route->SetOutputFrom (0);
1532  route->SetOutputTo (15);
1533  route->OutputAvoidDrumChannel (true);
1534 
1535  connect(route, in);
1536 
1537  CPPUNIT_ASSERT( in );
1538  in -> SetName(SRCDIR "/all_controller_off.mid");
1539 
1540 
1541  // First check: Input device provides the correct delta times
1543  mutabor::CurrentTime = mutabor::microseconds(0);
1544 
1545 // in -> Play(wxTHREAD_JOINABLE);
1547 
1548  CPPUNIT_ASSERT(out->Check((
1549 "0 Opened...\n"
1550 "0 0: e0 00 40\n"
1551 "0 0: b0 7a 00\n"
1552 "0 0: b0 7d 00\n"
1553 "0 0: b0 7f 00\n"
1554 "0 0: b0 65 00\n"
1555 "0 0: b0 64 00\n"
1556 "0 0: b0 06 02\n"
1557 "0 0: b0 26 00\n"
1558 "0 1: e1 00 40\n"
1559 "0 1: b1 7a 00\n"
1560 "0 1: b1 7d 00\n"
1561 "0 1: b1 7f 00\n"
1562 "0 1: b1 65 00\n"
1563 "0 1: b1 64 00\n"
1564 "0 1: b1 06 02\n"
1565 "0 1: b1 26 00\n"
1566 "0 2: e2 00 40\n"
1567 "0 2: b2 7a 00\n"
1568 "0 2: b2 7d 00\n"
1569 "0 2: b2 7f 00\n"
1570 "0 2: b2 65 00\n"
1571 "0 2: b2 64 00\n"
1572 "0 2: b2 06 02\n"
1573 "0 2: b2 26 00\n"
1574 "0 3: e3 00 40\n"
1575 "0 3: b3 7a 00\n"
1576 "0 3: b3 7d 00\n"
1577 "0 3: b3 7f 00\n"
1578 "0 3: b3 65 00\n"
1579 "0 3: b3 64 00\n"
1580 "0 3: b3 06 02\n"
1581 "0 3: b3 26 00\n"
1582 "0 4: e4 00 40\n"
1583 "0 4: b4 7a 00\n"
1584 "0 4: b4 7d 00\n"
1585 "0 4: b4 7f 00\n"
1586 "0 4: b4 65 00\n"
1587 "0 4: b4 64 00\n"
1588 "0 4: b4 06 02\n"
1589 "0 4: b4 26 00\n"
1590 "0 5: e5 00 40\n"
1591 "0 5: b5 7a 00\n"
1592 "0 5: b5 7d 00\n"
1593 "0 5: b5 7f 00\n"
1594 "0 5: b5 65 00\n"
1595 "0 5: b5 64 00\n"
1596 "0 5: b5 06 02\n"
1597 "0 5: b5 26 00\n"
1598 "0 6: e6 00 40\n"
1599 "0 6: b6 7a 00\n"
1600 "0 6: b6 7d 00\n"
1601 "0 6: b6 7f 00\n"
1602 "0 6: b6 65 00\n"
1603 "0 6: b6 64 00\n"
1604 "0 6: b6 06 02\n"
1605 "0 6: b6 26 00\n"
1606 "0 7: e7 00 40\n"
1607 "0 7: b7 7a 00\n"
1608 "0 7: b7 7d 00\n"
1609 "0 7: b7 7f 00\n"
1610 "0 7: b7 65 00\n"
1611 "0 7: b7 64 00\n"
1612 "0 7: b7 06 02\n"
1613 "0 7: b7 26 00\n"
1614 "0 8: e8 00 40\n"
1615 "0 8: b8 7a 00\n"
1616 "0 8: b8 7d 00\n"
1617 "0 8: b8 7f 00\n"
1618 "0 8: b8 65 00\n"
1619 "0 8: b8 64 00\n"
1620 "0 8: b8 06 02\n"
1621 "0 8: b8 26 00\n"
1622 "0 9: e9 00 40\n"
1623 "0 9: b9 7a 00\n"
1624 "0 9: b9 7d 00\n"
1625 "0 9: b9 7f 00\n"
1626 "0 9: b9 65 00\n"
1627 "0 9: b9 64 00\n"
1628 "0 9: b9 06 02\n"
1629 "0 9: b9 26 00\n"
1630 "0 10: ea 00 40\n"
1631 "0 10: ba 7a 00\n"
1632 "0 10: ba 7d 00\n"
1633 "0 10: ba 7f 00\n"
1634 "0 10: ba 65 00\n"
1635 "0 10: ba 64 00\n"
1636 "0 10: ba 06 02\n"
1637 "0 10: ba 26 00\n"
1638 "0 11: eb 00 40\n"
1639 "0 11: bb 7a 00\n"
1640 "0 11: bb 7d 00\n"
1641 "0 11: bb 7f 00\n"
1642 "0 11: bb 65 00\n"
1643 "0 11: bb 64 00\n"
1644 "0 11: bb 06 02\n"
1645 "0 11: bb 26 00\n"
1646 "0 12: ec 00 40\n"
1647 "0 12: bc 7a 00\n"
1648 "0 12: bc 7d 00\n"
1649 "0 12: bc 7f 00\n"
1650 "0 12: bc 65 00\n"
1651 "0 12: bc 64 00\n"
1652 "0 12: bc 06 02\n"
1653 "0 12: bc 26 00\n"
1654 "0 13: ed 00 40\n"
1655 "0 13: bd 7a 00\n"
1656 "0 13: bd 7d 00\n"
1657 "0 13: bd 7f 00\n"
1658 "0 13: bd 65 00\n"
1659 "0 13: bd 64 00\n"
1660 "0 13: bd 06 02\n"
1661 "0 13: bd 26 00\n"
1662 "0 14: ee 00 40\n"
1663 "0 14: be 7a 00\n"
1664 "0 14: be 7d 00\n"
1665 "0 14: be 7f 00\n"
1666 "0 14: be 65 00\n"
1667 "0 14: be 64 00\n"
1668 "0 14: be 06 02\n"
1669 "0 14: be 26 00\n"
1670 "0 15: ef 00 40\n"
1671 "0 15: bf 7a 00\n"
1672 "0 15: bf 7d 00\n"
1673 "0 15: bf 7f 00\n"
1674 "0 15: bf 65 00\n"
1675 "0 15: bf 64 00\n"
1676 "0 15: bf 06 02\n"
1677 "0 15: bf 26 00\n"
1678 "0 0: 90 3c 7f\n"
1679 "1000 0: b0 00 37\n"
1680 "16000 0: b0 03 14\n"
1681 "29000 0: b0 07 3a\n"
1682 "46000 0: b0 0b 05\n"
1683 "101000 0: b0 19 54\n"
1684 "489000 0: b0 40 00\n"
1685 "489000 0: b0 42 00\n"
1686 "489000 0: b0 44 00\n"
1687 "489000 0: b0 45 00\n"
1688 "489000 0: 80 3c 7f\n"
1689 "490000 1: b1 00 37\n"
1690 "490000 1: 91 40 3f\n"
1691 "490000 1: b1 07 3a\n"
1692 "490000 1: b1 03 00\n"
1693 "490000 1: b1 0b 7f\n"
1694 "490000 1: b1 19 00\n"
1695 "492000 1: 81 40 3e\n"
1696 "546000 ...closed.\n"
1697 ),__LINE__,(__FILE__)));
1698 
1699 }
mutabor::Route route
mutabor::InputDevice in
Definition: DevMidFTest.h:85
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ testBankSelect()

void InputMidiFileTest::testBankSelect ( )

Definiert in Zeile 1272 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testPlayMidi().

1273 {
1274 #ifdef DEBUG
1275 // mutabor_debug_flags.timer = true;
1276 // mutabor_debug_flags.midiio = true;
1277 // mutabor_debug_flags.midifile = true;
1278 #endif
1279 
1280  // input device is set up during setUp
1281  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1282  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1283  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1284  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1285 
1288  mutabor::ScopedBox box(NULL);
1291 
1294  connect(route,box);
1295 
1297  out = new midicmnOutputDevice(("Test"));
1298  out->SetBendingRange(2);
1299  //out = new midicmnOutputDevice(3,("Test"));
1300  guard = out;
1301 
1302  connect(route,guard);
1303  route->SetOutputFrom (0);
1304  route->SetOutputTo (15);
1305  route->OutputAvoidDrumChannel (true);
1306 
1307  connect(route, in);
1308 
1309  CPPUNIT_ASSERT( in );
1310  in -> SetName(SRCDIR "/bank_select.mid");
1311 
1312 
1313  // First check: Input device provides the correct delta times
1315  mutabor::CurrentTime = mutabor::microseconds(0);
1316 
1317 // in -> Play(wxTHREAD_JOINABLE);
1319 
1320  CPPUNIT_ASSERT(out->Check((
1321 "0 Opened...\n"
1322 "0 0: e0 00 40\n"
1323 "0 0: b0 7a 00\n"
1324 "0 0: b0 7d 00\n"
1325 "0 0: b0 7f 00\n"
1326 "0 0: b0 65 00\n"
1327 "0 0: b0 64 00\n"
1328 "0 0: b0 06 02\n"
1329 "0 0: b0 26 00\n"
1330 "0 1: e1 00 40\n"
1331 "0 1: b1 7a 00\n"
1332 "0 1: b1 7d 00\n"
1333 "0 1: b1 7f 00\n"
1334 "0 1: b1 65 00\n"
1335 "0 1: b1 64 00\n"
1336 "0 1: b1 06 02\n"
1337 "0 1: b1 26 00\n"
1338 "0 2: e2 00 40\n"
1339 "0 2: b2 7a 00\n"
1340 "0 2: b2 7d 00\n"
1341 "0 2: b2 7f 00\n"
1342 "0 2: b2 65 00\n"
1343 "0 2: b2 64 00\n"
1344 "0 2: b2 06 02\n"
1345 "0 2: b2 26 00\n"
1346 "0 3: e3 00 40\n"
1347 "0 3: b3 7a 00\n"
1348 "0 3: b3 7d 00\n"
1349 "0 3: b3 7f 00\n"
1350 "0 3: b3 65 00\n"
1351 "0 3: b3 64 00\n"
1352 "0 3: b3 06 02\n"
1353 "0 3: b3 26 00\n"
1354 "0 4: e4 00 40\n"
1355 "0 4: b4 7a 00\n"
1356 "0 4: b4 7d 00\n"
1357 "0 4: b4 7f 00\n"
1358 "0 4: b4 65 00\n"
1359 "0 4: b4 64 00\n"
1360 "0 4: b4 06 02\n"
1361 "0 4: b4 26 00\n"
1362 "0 5: e5 00 40\n"
1363 "0 5: b5 7a 00\n"
1364 "0 5: b5 7d 00\n"
1365 "0 5: b5 7f 00\n"
1366 "0 5: b5 65 00\n"
1367 "0 5: b5 64 00\n"
1368 "0 5: b5 06 02\n"
1369 "0 5: b5 26 00\n"
1370 "0 6: e6 00 40\n"
1371 "0 6: b6 7a 00\n"
1372 "0 6: b6 7d 00\n"
1373 "0 6: b6 7f 00\n"
1374 "0 6: b6 65 00\n"
1375 "0 6: b6 64 00\n"
1376 "0 6: b6 06 02\n"
1377 "0 6: b6 26 00\n"
1378 "0 7: e7 00 40\n"
1379 "0 7: b7 7a 00\n"
1380 "0 7: b7 7d 00\n"
1381 "0 7: b7 7f 00\n"
1382 "0 7: b7 65 00\n"
1383 "0 7: b7 64 00\n"
1384 "0 7: b7 06 02\n"
1385 "0 7: b7 26 00\n"
1386 "0 8: e8 00 40\n"
1387 "0 8: b8 7a 00\n"
1388 "0 8: b8 7d 00\n"
1389 "0 8: b8 7f 00\n"
1390 "0 8: b8 65 00\n"
1391 "0 8: b8 64 00\n"
1392 "0 8: b8 06 02\n"
1393 "0 8: b8 26 00\n"
1394 "0 9: e9 00 40\n"
1395 "0 9: b9 7a 00\n"
1396 "0 9: b9 7d 00\n"
1397 "0 9: b9 7f 00\n"
1398 "0 9: b9 65 00\n"
1399 "0 9: b9 64 00\n"
1400 "0 9: b9 06 02\n"
1401 "0 9: b9 26 00\n"
1402 "0 10: ea 00 40\n"
1403 "0 10: ba 7a 00\n"
1404 "0 10: ba 7d 00\n"
1405 "0 10: ba 7f 00\n"
1406 "0 10: ba 65 00\n"
1407 "0 10: ba 64 00\n"
1408 "0 10: ba 06 02\n"
1409 "0 10: ba 26 00\n"
1410 "0 11: eb 00 40\n"
1411 "0 11: bb 7a 00\n"
1412 "0 11: bb 7d 00\n"
1413 "0 11: bb 7f 00\n"
1414 "0 11: bb 65 00\n"
1415 "0 11: bb 64 00\n"
1416 "0 11: bb 06 02\n"
1417 "0 11: bb 26 00\n"
1418 "0 12: ec 00 40\n"
1419 "0 12: bc 7a 00\n"
1420 "0 12: bc 7d 00\n"
1421 "0 12: bc 7f 00\n"
1422 "0 12: bc 65 00\n"
1423 "0 12: bc 64 00\n"
1424 "0 12: bc 06 02\n"
1425 "0 12: bc 26 00\n"
1426 "0 13: ed 00 40\n"
1427 "0 13: bd 7a 00\n"
1428 "0 13: bd 7d 00\n"
1429 "0 13: bd 7f 00\n"
1430 "0 13: bd 65 00\n"
1431 "0 13: bd 64 00\n"
1432 "0 13: bd 06 02\n"
1433 "0 13: bd 26 00\n"
1434 "0 14: ee 00 40\n"
1435 "0 14: be 7a 00\n"
1436 "0 14: be 7d 00\n"
1437 "0 14: be 7f 00\n"
1438 "0 14: be 65 00\n"
1439 "0 14: be 64 00\n"
1440 "0 14: be 06 02\n"
1441 "0 14: be 26 00\n"
1442 "0 15: ef 00 40\n"
1443 "0 15: bf 7a 00\n"
1444 "0 15: bf 7d 00\n"
1445 "0 15: bf 7f 00\n"
1446 "0 15: bf 65 00\n"
1447 "0 15: bf 64 00\n"
1448 "0 15: bf 06 02\n"
1449 "0 15: bf 26 00\n"
1450 "0 0: 90 3c 7f\n"
1451 "1000 0: b0 00 37\n"
1452 "3000 1: b1 00 37\n"
1453 "3000 1: 91 40 4f\n"
1454 "4000 0: b0 00 6e\n"
1455 "4000 1: b1 00 6e\n"
1456 "5000 1: 81 40 4e\n"
1457 "6000 2: b2 00 6e\n"
1458 "6000 2: 92 40 4f\n"
1459 "7000 0: b0 00 00\n"
1460 "7000 2: b2 00 00\n"
1461 "8000 2: 82 40 4e\n"
1462 "8000 3: b3 00 00\n"
1463 "8000 3: 93 40 4f\n"
1464 "10000 0: b0 00 25\n"
1465 "10000 3: b3 00 25\n"
1466 "11000 3: 83 40 4e\n"
1467 "12000 4: b4 00 25\n"
1468 "12000 4: 94 40 4f\n"
1469 "13000 0: b0 20 57\n"
1470 "13000 4: b4 20 57\n"
1471 "14000 4: 84 40 4e\n"
1472 "15000 5: b5 00 25\n"
1473 "15000 5: b5 20 57\n"
1474 "15000 5: 95 40 4f\n"
1475 "16000 0: b0 20 0e\n"
1476 "16000 5: b5 20 0e\n"
1477 "17000 5: 85 40 4e\n"
1478 "18000 6: b6 00 25\n"
1479 "18000 6: b6 20 0e\n"
1480 "18000 6: 96 40 4f\n"
1481 "19000 0: b0 20 00\n"
1482 "19000 6: b6 20 00\n"
1483 "20000 6: 86 40 4e\n"
1484 "21000 7: b7 00 25\n"
1485 "21000 7: b7 20 00\n"
1486 "21000 7: 97 40 4f\n"
1487 "22000 0: b0 20 45\n"
1488 "22000 7: b7 20 45\n"
1489 "23000 7: 87 40 4e\n"
1490 "24000 8: b8 00 25\n"
1491 "24000 8: b8 20 45\n"
1492 "24000 8: 98 40 4f\n"
1493 "509000 0: 80 3c 40\n"
1494 "509000 8: 88 40 40\n"
1495 "509000 ...closed.\n"
1496 ),__LINE__,(__FILE__)));
1497 
1498 }
mutabor::Route route
mutabor::InputDevice in
Definition: DevMidFTest.h:85
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ testBatchPlay1() [1/2]

void InputMidiFileTest::testBatchPlay1 ( )

Definiert in Zeile 75 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::OutputDeviceClass::Close(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::InputDeviceClass::NO_DELTA(), out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von OutputMidiFileTest::countTestCases() und InputMidiFileTest::testPlayMidi().

76 {
77 #ifdef DEBUG
78 // mutabor_debug_flags.timer = true;
79 // mutabor_debug_flags.midiio = true;
80 #endif
81 
82  // input device is set up during setUp
83  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size()==1);
84  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
85  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
86  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
87 
90  mutabor::ScopedBox box(NULL);
93 
96  connect(route,box);
97 
99  out = new midicmnOutputDevice(("Test"));
100  out->SetBendingRange(2);
101  //out = new midicmnOutputDevice(3,("Test"));
102  guard = out;
103 
104  connect(route,guard);
105  route->SetOutputFrom (0);
106  route->SetOutputTo (15);
107  route->OutputAvoidDrumChannel (true);
108 
109  connect(route, in);
110 
111  CPPUNIT_ASSERT( in );
112  in -> SetName(SRCDIR "/midi1_source.mid");
113 
114 
115  // First check: Input device provides the correct delta times
116 
118  mutabor::CurrentTime = mutabor::microseconds(0);
119 
120  CPPUNIT_ASSERT((out -> Open()));
121  CPPUNIT_ASSERT(box -> Open());
122  CPPUNIT_ASSERT((in -> Open()));
123  CPPUNIT_ASSERT(out->Check(("0 Opened...\n"
124 "0 0: e0 00 40\n"
125 "0 0: b0 7a 00\n"
126 "0 0: b0 7d 00\n"
127 "0 0: b0 7f 00\n"
128 "0 0: b0 65 00\n"
129 "0 0: b0 64 00\n"
130 "0 0: b0 06 02\n"
131 "0 0: b0 26 00\n"
132 "0 1: e1 00 40\n"
133 "0 1: b1 7a 00\n"
134 "0 1: b1 7d 00\n"
135 "0 1: b1 7f 00\n"
136 "0 1: b1 65 00\n"
137 "0 1: b1 64 00\n"
138 "0 1: b1 06 02\n"
139 "0 1: b1 26 00\n"
140 "0 2: e2 00 40\n"
141 "0 2: b2 7a 00\n"
142 "0 2: b2 7d 00\n"
143 "0 2: b2 7f 00\n"
144 "0 2: b2 65 00\n"
145 "0 2: b2 64 00\n"
146 "0 2: b2 06 02\n"
147 "0 2: b2 26 00\n"
148 "0 3: e3 00 40\n"
149 "0 3: b3 7a 00\n"
150 "0 3: b3 7d 00\n"
151 "0 3: b3 7f 00\n"
152 "0 3: b3 65 00\n"
153 "0 3: b3 64 00\n"
154 "0 3: b3 06 02\n"
155 "0 3: b3 26 00\n"
156 "0 4: e4 00 40\n"
157 "0 4: b4 7a 00\n"
158 "0 4: b4 7d 00\n"
159 "0 4: b4 7f 00\n"
160 "0 4: b4 65 00\n"
161 "0 4: b4 64 00\n"
162 "0 4: b4 06 02\n"
163 "0 4: b4 26 00\n"
164 "0 5: e5 00 40\n"
165 "0 5: b5 7a 00\n"
166 "0 5: b5 7d 00\n"
167 "0 5: b5 7f 00\n"
168 "0 5: b5 65 00\n"
169 "0 5: b5 64 00\n"
170 "0 5: b5 06 02\n"
171 "0 5: b5 26 00\n"
172 "0 6: e6 00 40\n"
173 "0 6: b6 7a 00\n"
174 "0 6: b6 7d 00\n"
175 "0 6: b6 7f 00\n"
176 "0 6: b6 65 00\n"
177 "0 6: b6 64 00\n"
178 "0 6: b6 06 02\n"
179 "0 6: b6 26 00\n"
180 "0 7: e7 00 40\n"
181 "0 7: b7 7a 00\n"
182 "0 7: b7 7d 00\n"
183 "0 7: b7 7f 00\n"
184 "0 7: b7 65 00\n"
185 "0 7: b7 64 00\n"
186 "0 7: b7 06 02\n"
187 "0 7: b7 26 00\n"
188 "0 8: e8 00 40\n"
189 "0 8: b8 7a 00\n"
190 "0 8: b8 7d 00\n"
191 "0 8: b8 7f 00\n"
192 "0 8: b8 65 00\n"
193 "0 8: b8 64 00\n"
194 "0 8: b8 06 02\n"
195 "0 8: b8 26 00\n"
196 "0 9: e9 00 40\n"
197 "0 9: b9 7a 00\n"
198 "0 9: b9 7d 00\n"
199 "0 9: b9 7f 00\n"
200 "0 9: b9 65 00\n"
201 "0 9: b9 64 00\n"
202 "0 9: b9 06 02\n"
203 "0 9: b9 26 00\n"
204 "0 10: ea 00 40\n"
205 "0 10: ba 7a 00\n"
206 "0 10: ba 7d 00\n"
207 "0 10: ba 7f 00\n"
208 "0 10: ba 65 00\n"
209 "0 10: ba 64 00\n"
210 "0 10: ba 06 02\n"
211 "0 10: ba 26 00\n"
212 "0 11: eb 00 40\n"
213 "0 11: bb 7a 00\n"
214 "0 11: bb 7d 00\n"
215 "0 11: bb 7f 00\n"
216 "0 11: bb 65 00\n"
217 "0 11: bb 64 00\n"
218 "0 11: bb 06 02\n"
219 "0 11: bb 26 00\n"
220 "0 12: ec 00 40\n"
221 "0 12: bc 7a 00\n"
222 "0 12: bc 7d 00\n"
223 "0 12: bc 7f 00\n"
224 "0 12: bc 65 00\n"
225 "0 12: bc 64 00\n"
226 "0 12: bc 06 02\n"
227 "0 12: bc 26 00\n"
228 "0 13: ed 00 40\n"
229 "0 13: bd 7a 00\n"
230 "0 13: bd 7d 00\n"
231 "0 13: bd 7f 00\n"
232 "0 13: bd 65 00\n"
233 "0 13: bd 64 00\n"
234 "0 13: bd 06 02\n"
235 "0 13: bd 26 00\n"
236 "0 14: ee 00 40\n"
237 "0 14: be 7a 00\n"
238 "0 14: be 7d 00\n"
239 "0 14: be 7f 00\n"
240 "0 14: be 65 00\n"
241 "0 14: be 64 00\n"
242 "0 14: be 06 02\n"
243 "0 14: be 26 00\n"
244 "0 15: ef 00 40\n"
245 "0 15: bf 7a 00\n"
246 "0 15: bf 7d 00\n"
247 "0 15: bf 7f 00\n"
248 "0 15: bf 65 00\n"
249 "0 15: bf 64 00\n"
250 "0 15: bf 06 02\n"
251 "0 15: bf 26 00\n"),__LINE__,(__FILE__)));
252 
253 // in -> Play(wxTHREAD_JOINABLE);
254 // mutabor::InputDeviceClass::BatchPlay();
255  in -> Play();
256  mutabor::microseconds delta = in -> PrepareNextEvent();
257  // hold pedal comes from the sustain parameter to the contstructor
258  CPPUNIT_ASSERT(out->Check((
259 "0 0: c0 4f\n"
260 "0 0: 90 3c 7f\n"
261 ),__LINE__,(__FILE__)));
262 
263  CPPUNIT_ASSERT(delta == mutabor::microseconds(49920));
264  delta = in -> PrepareNextEvent();
265  CPPUNIT_ASSERT(out->Check((
266 "0 1: c1 4f\n"
267 "0 1: 91 40 1f\n"
268 ),__LINE__,(__FILE__)));
269  CPPUNIT_ASSERT(delta == mutabor::microseconds(49920));
270  delta = in -> PrepareNextEvent();
271  CPPUNIT_ASSERT(out->Check((
272 "0 1: 81 40 40\n"
273 "0 2: c2 4f\n"
274 "0 2: 92 43 3f\n"
275 ),__LINE__,(__FILE__)));
276  CPPUNIT_ASSERT(delta == mutabor::microseconds(49920));
277  delta = in -> PrepareNextEvent();
278  CPPUNIT_ASSERT(out->Check((
279 "0 2: 82 43 40\n"
280 "0 3: c3 4f\n"
281 "0 3: 93 34 7f\n"
282 ),__LINE__,(__FILE__)));
283  CPPUNIT_ASSERT(delta == mutabor::microseconds(49920));
284  delta = in -> PrepareNextEvent();
285  CPPUNIT_ASSERT(out->Check(("0 3: 83 34 40\n"),__LINE__,(__FILE__)));
286  CPPUNIT_ASSERT(delta == mutabor::microseconds(49920));
287  delta = in -> PrepareNextEvent();
288  CPPUNIT_ASSERT(out->Check(("0 0: 80 3c 7f\n"),__LINE__,(__FILE__)));
289  CPPUNIT_ASSERT(delta == mutabor::InputDeviceClass::NO_DELTA());
290 
291  in->Close();
292  box->Close();
293  out->Close();
294  CPPUNIT_ASSERT(out->Check(("0 ...closed.\n"),__LINE__,(__FILE__)));
295 
296 
297 
298  // Second check: Output device gets the correct delta times
299 
300  mutabor::CurrentTime = mutabor::microseconds(0);
301 
302 // in -> Play(wxTHREAD_JOINABLE);
304 
305  CPPUNIT_ASSERT(out->Check(("0 Opened...\n"
306 "0 0: e0 00 40\n"
307 "0 0: b0 7a 00\n"
308 "0 0: b0 7d 00\n"
309 "0 0: b0 7f 00\n"
310 "0 0: b0 65 00\n"
311 "0 0: b0 64 00\n"
312 "0 0: b0 06 02\n"
313 "0 0: b0 26 00\n"
314 "0 1: e1 00 40\n"
315 "0 1: b1 7a 00\n"
316 "0 1: b1 7d 00\n"
317 "0 1: b1 7f 00\n"
318 "0 1: b1 65 00\n"
319 "0 1: b1 64 00\n"
320 "0 1: b1 06 02\n"
321 "0 1: b1 26 00\n"
322 "0 2: e2 00 40\n"
323 "0 2: b2 7a 00\n"
324 "0 2: b2 7d 00\n"
325 "0 2: b2 7f 00\n"
326 "0 2: b2 65 00\n"
327 "0 2: b2 64 00\n"
328 "0 2: b2 06 02\n"
329 "0 2: b2 26 00\n"
330 "0 3: e3 00 40\n"
331 "0 3: b3 7a 00\n"
332 "0 3: b3 7d 00\n"
333 "0 3: b3 7f 00\n"
334 "0 3: b3 65 00\n"
335 "0 3: b3 64 00\n"
336 "0 3: b3 06 02\n"
337 "0 3: b3 26 00\n"
338 "0 4: e4 00 40\n"
339 "0 4: b4 7a 00\n"
340 "0 4: b4 7d 00\n"
341 "0 4: b4 7f 00\n"
342 "0 4: b4 65 00\n"
343 "0 4: b4 64 00\n"
344 "0 4: b4 06 02\n"
345 "0 4: b4 26 00\n"
346 "0 5: e5 00 40\n"
347 "0 5: b5 7a 00\n"
348 "0 5: b5 7d 00\n"
349 "0 5: b5 7f 00\n"
350 "0 5: b5 65 00\n"
351 "0 5: b5 64 00\n"
352 "0 5: b5 06 02\n"
353 "0 5: b5 26 00\n"
354 "0 6: e6 00 40\n"
355 "0 6: b6 7a 00\n"
356 "0 6: b6 7d 00\n"
357 "0 6: b6 7f 00\n"
358 "0 6: b6 65 00\n"
359 "0 6: b6 64 00\n"
360 "0 6: b6 06 02\n"
361 "0 6: b6 26 00\n"
362 "0 7: e7 00 40\n"
363 "0 7: b7 7a 00\n"
364 "0 7: b7 7d 00\n"
365 "0 7: b7 7f 00\n"
366 "0 7: b7 65 00\n"
367 "0 7: b7 64 00\n"
368 "0 7: b7 06 02\n"
369 "0 7: b7 26 00\n"
370 "0 8: e8 00 40\n"
371 "0 8: b8 7a 00\n"
372 "0 8: b8 7d 00\n"
373 "0 8: b8 7f 00\n"
374 "0 8: b8 65 00\n"
375 "0 8: b8 64 00\n"
376 "0 8: b8 06 02\n"
377 "0 8: b8 26 00\n"
378 "0 9: e9 00 40\n"
379 "0 9: b9 7a 00\n"
380 "0 9: b9 7d 00\n"
381 "0 9: b9 7f 00\n"
382 "0 9: b9 65 00\n"
383 "0 9: b9 64 00\n"
384 "0 9: b9 06 02\n"
385 "0 9: b9 26 00\n"
386 "0 10: ea 00 40\n"
387 "0 10: ba 7a 00\n"
388 "0 10: ba 7d 00\n"
389 "0 10: ba 7f 00\n"
390 "0 10: ba 65 00\n"
391 "0 10: ba 64 00\n"
392 "0 10: ba 06 02\n"
393 "0 10: ba 26 00\n"
394 "0 11: eb 00 40\n"
395 "0 11: bb 7a 00\n"
396 "0 11: bb 7d 00\n"
397 "0 11: bb 7f 00\n"
398 "0 11: bb 65 00\n"
399 "0 11: bb 64 00\n"
400 "0 11: bb 06 02\n"
401 "0 11: bb 26 00\n"
402 "0 12: ec 00 40\n"
403 "0 12: bc 7a 00\n"
404 "0 12: bc 7d 00\n"
405 "0 12: bc 7f 00\n"
406 "0 12: bc 65 00\n"
407 "0 12: bc 64 00\n"
408 "0 12: bc 06 02\n"
409 "0 12: bc 26 00\n"
410 "0 13: ed 00 40\n"
411 "0 13: bd 7a 00\n"
412 "0 13: bd 7d 00\n"
413 "0 13: bd 7f 00\n"
414 "0 13: bd 65 00\n"
415 "0 13: bd 64 00\n"
416 "0 13: bd 06 02\n"
417 "0 13: bd 26 00\n"
418 "0 14: ee 00 40\n"
419 "0 14: be 7a 00\n"
420 "0 14: be 7d 00\n"
421 "0 14: be 7f 00\n"
422 "0 14: be 65 00\n"
423 "0 14: be 64 00\n"
424 "0 14: be 06 02\n"
425 "0 14: be 26 00\n"
426 "0 15: ef 00 40\n"
427 "0 15: bf 7a 00\n"
428 "0 15: bf 7d 00\n"
429 "0 15: bf 7f 00\n"
430 "0 15: bf 65 00\n"
431 "0 15: bf 64 00\n"
432 "0 15: bf 06 02\n"
433 "0 15: bf 26 00\n"
434 "0 0: c0 4f\n"
435 "0 0: 90 3c 7f\n"
436 "49920000 1: c1 4f\n"
437 "49920000 1: 91 40 1f\n"
438 "99840000 1: 81 40 40\n"
439 "99840000 2: c2 4f\n"
440 "99840000 2: 92 43 3f\n"
441 "149760000 2: 82 43 40\n"
442 "149760000 3: c3 4f\n"
443 "149760000 3: 93 34 7f\n"
444 "199680000 3: 83 34 40\n"
445 "249600000 0: 80 3c 7f\n"
446 "249600000 ...closed.\n"),__LINE__,(__FILE__)));
447 
448  sleep(1);
449 
451 
452  CPPUNIT_ASSERT(out->Check(("0 Opened...\n"
453 "0 0: e0 00 40\n"
454 "0 0: b0 7a 00\n"
455 "0 0: b0 7d 00\n"
456 "0 0: b0 7f 00\n"
457 "0 0: b0 65 00\n"
458 "0 0: b0 64 00\n"
459 "0 0: b0 06 02\n"
460 "0 0: b0 26 00\n"
461 "0 1: e1 00 40\n"
462 "0 1: b1 7a 00\n"
463 "0 1: b1 7d 00\n"
464 "0 1: b1 7f 00\n"
465 "0 1: b1 65 00\n"
466 "0 1: b1 64 00\n"
467 "0 1: b1 06 02\n"
468 "0 1: b1 26 00\n"
469 "0 2: e2 00 40\n"
470 "0 2: b2 7a 00\n"
471 "0 2: b2 7d 00\n"
472 "0 2: b2 7f 00\n"
473 "0 2: b2 65 00\n"
474 "0 2: b2 64 00\n"
475 "0 2: b2 06 02\n"
476 "0 2: b2 26 00\n"
477 "0 3: e3 00 40\n"
478 "0 3: b3 7a 00\n"
479 "0 3: b3 7d 00\n"
480 "0 3: b3 7f 00\n"
481 "0 3: b3 65 00\n"
482 "0 3: b3 64 00\n"
483 "0 3: b3 06 02\n"
484 "0 3: b3 26 00\n"
485 "0 4: e4 00 40\n"
486 "0 4: b4 7a 00\n"
487 "0 4: b4 7d 00\n"
488 "0 4: b4 7f 00\n"
489 "0 4: b4 65 00\n"
490 "0 4: b4 64 00\n"
491 "0 4: b4 06 02\n"
492 "0 4: b4 26 00\n"
493 "0 5: e5 00 40\n"
494 "0 5: b5 7a 00\n"
495 "0 5: b5 7d 00\n"
496 "0 5: b5 7f 00\n"
497 "0 5: b5 65 00\n"
498 "0 5: b5 64 00\n"
499 "0 5: b5 06 02\n"
500 "0 5: b5 26 00\n"
501 "0 6: e6 00 40\n"
502 "0 6: b6 7a 00\n"
503 "0 6: b6 7d 00\n"
504 "0 6: b6 7f 00\n"
505 "0 6: b6 65 00\n"
506 "0 6: b6 64 00\n"
507 "0 6: b6 06 02\n"
508 "0 6: b6 26 00\n"
509 "0 7: e7 00 40\n"
510 "0 7: b7 7a 00\n"
511 "0 7: b7 7d 00\n"
512 "0 7: b7 7f 00\n"
513 "0 7: b7 65 00\n"
514 "0 7: b7 64 00\n"
515 "0 7: b7 06 02\n"
516 "0 7: b7 26 00\n"
517 "0 8: e8 00 40\n"
518 "0 8: b8 7a 00\n"
519 "0 8: b8 7d 00\n"
520 "0 8: b8 7f 00\n"
521 "0 8: b8 65 00\n"
522 "0 8: b8 64 00\n"
523 "0 8: b8 06 02\n"
524 "0 8: b8 26 00\n"
525 "0 9: e9 00 40\n"
526 "0 9: b9 7a 00\n"
527 "0 9: b9 7d 00\n"
528 "0 9: b9 7f 00\n"
529 "0 9: b9 65 00\n"
530 "0 9: b9 64 00\n"
531 "0 9: b9 06 02\n"
532 "0 9: b9 26 00\n"
533 "0 10: ea 00 40\n"
534 "0 10: ba 7a 00\n"
535 "0 10: ba 7d 00\n"
536 "0 10: ba 7f 00\n"
537 "0 10: ba 65 00\n"
538 "0 10: ba 64 00\n"
539 "0 10: ba 06 02\n"
540 "0 10: ba 26 00\n"
541 "0 11: eb 00 40\n"
542 "0 11: bb 7a 00\n"
543 "0 11: bb 7d 00\n"
544 "0 11: bb 7f 00\n"
545 "0 11: bb 65 00\n"
546 "0 11: bb 64 00\n"
547 "0 11: bb 06 02\n"
548 "0 11: bb 26 00\n"
549 "0 12: ec 00 40\n"
550 "0 12: bc 7a 00\n"
551 "0 12: bc 7d 00\n"
552 "0 12: bc 7f 00\n"
553 "0 12: bc 65 00\n"
554 "0 12: bc 64 00\n"
555 "0 12: bc 06 02\n"
556 "0 12: bc 26 00\n"
557 "0 13: ed 00 40\n"
558 "0 13: bd 7a 00\n"
559 "0 13: bd 7d 00\n"
560 "0 13: bd 7f 00\n"
561 "0 13: bd 65 00\n"
562 "0 13: bd 64 00\n"
563 "0 13: bd 06 02\n"
564 "0 13: bd 26 00\n"
565 "0 14: ee 00 40\n"
566 "0 14: be 7a 00\n"
567 "0 14: be 7d 00\n"
568 "0 14: be 7f 00\n"
569 "0 14: be 65 00\n"
570 "0 14: be 64 00\n"
571 "0 14: be 06 02\n"
572 "0 14: be 26 00\n"
573 "0 15: ef 00 40\n"
574 "0 15: bf 7a 00\n"
575 "0 15: bf 7d 00\n"
576 "0 15: bf 7f 00\n"
577 "0 15: bf 65 00\n"
578 "0 15: bf 64 00\n"
579 "0 15: bf 06 02\n"
580 "0 15: bf 26 00\n"
581 "0 0: c0 4f\n"
582 "0 0: 90 3c 7f\n"
583 "49920000 1: c1 4f\n"
584 "49920000 1: 91 40 1f\n"
585 "99840000 1: 81 40 40\n"
586 "99840000 2: c2 4f\n"
587 "99840000 2: 92 43 3f\n"
588 "149760000 2: 82 43 40\n"
589 "149760000 3: c3 4f\n"
590 "149760000 3: 93 34 7f\n"
591 "199680000 3: 83 34 40\n"
592 "249600000 0: 80 3c 7f\n"
593 "249600000 ...closed.\n"),__LINE__,(__FILE__)));
594 }
static boost::chrono::microseconds NO_DELTA()
Definition: Device.h:1254
mutabor::Route route
mutabor::InputDevice in
Definition: DevMidFTest.h:85
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ testBatchPlay1() [2/2]

void OutputMidiFileTest::testBatchPlay1 ( )
Noch zu erledigen:
Make the following line unneccessary: Implement caching of system states

Definiert in Zeile 5065 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::OutputDeviceClass::Close(), mutabor::InputMidiFile::Close(), mutabor::connect(), mutabor::DeviceFactory::CreateInput(), mutabor::CurrentTime, DEBUGLOG, mutabor::DTMidiFile, InputMidiFileTest::in, inguard, mutabor::InputDeviceClass::NO_DELTA(), out, route, string und mutabor::CurrentTimer::UseRealtime().

5066 {
5067 #ifdef DEBUG
5068 // mutabor::mutabor_debug_flags.timer = true;
5069 // mutabor::mutabor_debug_flags.midiio = true;
5070 #endif
5071 
5072  std::string CheckStr;
5073  std::string DataStr;
5077  static_cast<mutabor::InputMidiFile *> (inguard.get());
5078  CPPUNIT_ASSERT( in );
5079 
5080  connect(route, inguard);
5081 
5082  in -> SetName(SRCDIR "/bug019010.mid");
5084  mutabor::CurrentTime = mutabor::microseconds(0);
5085 
5086  CPPUNIT_ASSERT((out -> Open()));
5087 
5088 
5089  DataStr = (
5090 " 04 · 04 · 02 · 18 · 08 · 00 · e0 · 00 · 40 @ 00 · b0 · 7a z 00 · 00 · b0 · 7d }\n"
5091 " 00 · 00 · b0 · 7f · 00 · 00 · b0 · 65 e 00 · 00 · b0 · 64 d 00 · 00 · b0 · 06 ·\n"
5092 " 02 · 00 · b0 · 26 & 00 · 00 · e1 · 00 · 40 @ 00 · b1 · 7a z 00 · 00 · b1 · 7d }\n"
5093 " 00 · 00 · b1 · 7f · 00 · 00 · b1 · 65 e 00 · 00 · b1 · 64 d 00 · 00 · b1 · 06 ·\n"
5094 " 02 · 00 · b1 · 26 & 00 · 00 · e2 · 00 · 40 @ 00 · b2 · 7a z 00 · 00 · b2 · 7d }\n"
5095 " 00 · 00 · b2 · 7f · 00 · 00 · b2 · 65 e 00 · 00 · b2 · 64 d 00 · 00 · b2 · 06 ·\n"
5096 " 02 · 00 · b2 · 26 & 00 · 00 · e3 · 00 · 40 @ 00 · b3 · 7a z 00 · 00 · b3 · 7d }\n"
5097 " 00 · 00 · b3 · 7f · 00 · 00 · b3 · 65 e 00 · 00 · b3 · 64 d 00 · 00 · b3 · 06 ·\n"
5098 " 02 · 00 · b3 · 26 & 00 · 00 · e4 · 00 · 40 @ 00 · b4 · 7a z 00 · 00 · b4 · 7d }\n"
5099 " 00 · 00 · b4 · 7f · 00 · 00 · b4 · 65 e 00 · 00 · b4 · 64 d 00 · 00 · b4 · 06 ·\n"
5100 " 02 · 00 · b4 · 26 & 00 · 00 · e5 · 00 · 40 @ 00 · b5 · 7a z 00 · 00 · b5 · 7d }\n"
5101 " 00 · 00 · b5 · 7f · 00 · 00 · b5 · 65 e 00 · 00 · b5 · 64 d 00 · 00 · b5 · 06 ·\n"
5102 " 02 · 00 · b5 · 26 & 00 · 00 · e6 · 00 · 40 @ 00 · b6 · 7a z 00 · 00 · b6 · 7d }\n"
5103 " 00 · 00 · b6 · 7f · 00 · 00 · b6 · 65 e 00 · 00 · b6 · 64 d 00 · 00 · b6 · 06 ·\n"
5104 " 02 · 00 · b6 · 26 & 00 · 00 · e7 · 00 · 40 @ 00 · b7 · 7a z 00 · 00 · b7 · 7d }\n"
5105 " 00 · 00 · b7 · 7f · 00 · 00 · b7 · 65 e 00 · 00 · b7 · 64 d 00 · 00 · b7 · 06 ·\n"
5106 " 02 · 00 · b7 · 26 & 00 · 00 · e8 · 00 · 40 @ 00 · b8 · 7a z 00 · 00 · b8 · 7d }\n"
5107 " 00 · 00 · b8 · 7f · 00 · 00 · b8 · 65 e 00 · 00 · b8 · 64 d 00 · 00 · b8 · 06 ·\n"
5108 " 02 · 00 · b8 · 26 & 00 · 00 · e9 · 00 · 40 @ 00 · b9 · 7a z 00 · 00 · b9 · 7d }\n"
5109 " 00 · 00 · b9 · 7f · 00 · 00 · b9 · 65 e 00 · 00 · b9 · 64 d 00 · 00 · b9 · 06 ·\n"
5110 " 02 · 00 · b9 · 26 & 00 · 00 · ea · 00 · 40 @ 00 · ba · 7a z 00 · 00 · ba · 7d }\n"
5111 " 00 · 00 · ba · 7f · 00 · 00 · ba · 65 e 00 · 00 · ba · 64 d 00 · 00 · ba · 06 ·\n"
5112 " 02 · 00 · ba · 26 & 00 · 00 · eb · 00 · 40 @ 00 · bb · 7a z 00 · 00 · bb · 7d }\n"
5113 " 00 · 00 · bb · 7f · 00 · 00 · bb · 65 e 00 · 00 · bb · 64 d 00 · 00 · bb · 06 ·\n"
5114 " 02 · 00 · bb · 26 & 00 · 00 · ec · 00 · 40 @ 00 · bc · 7a z 00 · 00 · bc · 7d }\n"
5115 " 00 · 00 · bc · 7f · 00 · 00 · bc · 65 e 00 · 00 · bc · 64 d 00 · 00 · bc · 06 ·\n"
5116 " 02 · 00 · bc · 26 & 00 · 00 · ed · 00 · 40 @ 00 · bd · 7a z 00 · 00 · bd · 7d }\n"
5117 " 00 · 00 · bd · 7f · 00 · 00 · bd · 65 e 00 · 00 · bd · 64 d 00 · 00 · bd · 06 ·\n"
5118 " 02 · 00 · bd · 26 & 00 · 00 · ee · 00 · 40 @ 00 · be · 7a z 00 · 00 · be · 7d }\n"
5119 " 00 · 00 · be · 7f · 00 · 00 · be · 65 e 00 · 00 · be · 64 d 00 · 00 · be · 06 ·\n"
5120 " 02 · 00 · be · 26 & 00 · 00 · ef · 00 · 40 @ 00 · bf · 7a z 00 · 00 · bf · 7d }\n"
5121 " 00 · 00 · bf · 7f · 00 · 00 · bf · 65 e 00 · 00 · bf · 64 d 00 · 00 · bf · 06 ·\n"
5122 );
5123 
5124  CheckStr = (
5125 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5126 " 72 r 6b k 00 · 00 · 02 · 13 · 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5127 )
5128  + DataStr + (
5129 " 02 · 00 · bf · 26 & 00 · 00 · ff · 2f / 00 ·\n"
5130 );
5131 
5132  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5133  CPPUNIT_ASSERT(box->Open());
5134  CPPUNIT_ASSERT((in -> Open()));
5135  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5136 
5137  in -> Play();
5138 
5139  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5140 
5141  mutabor::microseconds delta = in -> PrepareNextEvent();
5142  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5143  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5144  CPPUNIT_ASSERT(delta == mutabor::microseconds(1086));
5145  mutabor::CurrentTime += delta;
5146 
5147  delta = in -> PrepareNextEvent();
5148  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5149  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5150  CPPUNIT_ASSERT(delta == mutabor::microseconds(1954800));
5151  mutabor::CurrentTime += delta;
5152 
5153  delta = in -> PrepareNextEvent();
5154  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5155  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5156  CPPUNIT_ASSERT(delta == mutabor::microseconds(14725074));
5157  mutabor::CurrentTime += delta;
5158 
5159  delta = in -> PrepareNextEvent();
5160  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5161  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5162  CPPUNIT_ASSERT(delta == mutabor::microseconds(130320));
5163  mutabor::CurrentTime += delta;
5164 
5165  delta = in -> PrepareNextEvent();
5166  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5167  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5168  CPPUNIT_ASSERT(delta == mutabor::microseconds(130200));
5169  mutabor::CurrentTime += delta;
5170 
5171  delta = in -> PrepareNextEvent();
5172  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5173  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5174  CPPUNIT_ASSERT(delta == mutabor::microseconds(4769600));
5175  mutabor::CurrentTime += delta;
5176 
5177  delta = in -> PrepareNextEvent();
5178  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5179 
5180  CheckStr = (
5181 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5182 " 72 r 6b k 00 · 00 · 02 · 19 · 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5183 )
5184  + DataStr + (
5185 " 02 · 00 · bf · 26 & 00 · 81 · a9 · 4f O 90 · 3c < 7f · 00 · ff · 2f / 00 ·\n"
5186 );
5187 
5188  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5189  CPPUNIT_ASSERT(delta == mutabor::microseconds(6287200));
5190  mutabor::CurrentTime += delta;
5191 
5192  delta = in -> PrepareNextEvent();
5193  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5194  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5195  CPPUNIT_ASSERT(delta == mutabor::microseconds(845040));
5196  mutabor::CurrentTime += delta;
5197 
5198  delta = in -> PrepareNextEvent();
5199  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5200  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5201  CPPUNIT_ASSERT(delta == mutabor::microseconds(120000));
5202  mutabor::CurrentTime += delta;
5203 
5204  delta = in -> PrepareNextEvent();
5205  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5206  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5207  CPPUNIT_ASSERT(delta == mutabor::microseconds(123960));
5208  mutabor::CurrentTime += delta;
5209 
5210  delta = in -> PrepareNextEvent();
5211  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5212  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5213  CPPUNIT_ASSERT(delta == mutabor::microseconds(3222960));
5214  mutabor::CurrentTime += delta;
5215 
5216  delta = in -> PrepareNextEvent();
5217  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5218 
5219 
5220  DataStr += (
5221 " 02 · 00 · bf · 26 & 00 · 81 · a9 · 4f O 90 · 3c < 7f · d2 · 67 g 91 · 40 @ 1f ·\n"
5222 );
5223 
5224  CheckStr = (
5225 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5226 " 72 r 6b k 00 · 00 · 02 · 1e · 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5227 )
5228  + DataStr + (
5229 " 00 · ff · 2f / 00 ·\n"
5230 );
5231 
5232  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5233  CPPUNIT_ASSERT(delta == mutabor::microseconds(10330000));
5234  mutabor::CurrentTime += delta;
5235 
5236  delta = in -> PrepareNextEvent();
5237  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5238 
5239  CheckStr = (
5240 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5241 " 72 r 6b k 00 · 00 · 02 · 23 # 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5242 )
5243  + DataStr + (
5244 " d0 · 5a Z 81 · 40 @ 40 @ 00 · ff · 2f / 00 ·\n"
5245 );
5246 
5247  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5248  CPPUNIT_ASSERT(delta == mutabor::microseconds(10330000));
5249  mutabor::CurrentTime += delta;
5250 
5251  delta = in -> PrepareNextEvent();
5252  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5253 
5254  CheckStr = (
5255 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5256 " 72 r 6b k 00 · 00 · 02 · 28 ( 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5257 )
5258  + DataStr + (
5259 " d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? 00 · ff · 2f / 00 ·\n"
5260 );
5261 
5262 
5263  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5264  CPPUNIT_ASSERT(delta == mutabor::microseconds(10330000));
5265  mutabor::CurrentTime += delta;
5266 
5267  delta = in -> PrepareNextEvent();
5268  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5269  CheckStr = (
5270 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5271 " 72 r 6b k 00 · 00 · 02 · 2d - 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5272 )
5273  + DataStr + (
5274 " d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? d0 · 5a Z 82 · 43 C 40 @ 00 ·\n"
5275 " ff · 2f / 00 ·\n"
5276 );
5277  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5278  CPPUNIT_ASSERT(delta == mutabor::microseconds(7809480));
5279  mutabor::CurrentTime += delta;
5280 
5281  delta = in -> PrepareNextEvent();
5282  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5283  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5284  CPPUNIT_ASSERT(delta == mutabor::microseconds(6100000));
5285  mutabor::CurrentTime += delta;
5286 
5287  delta = in -> PrepareNextEvent();
5288  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5289 
5290  DataStr += (
5291 " d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? d0 · 5a Z 82 · 43 C 40 @ ec ·\n"
5292 );
5293  CheckStr = (
5294 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5295 " 72 r 6b k 00 · 00 · 02 · 32 2 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5296 )
5297  + DataStr + (
5298 " 56 V 93 · 34 4 7f · 00 · ff · 2f / 00 ·\n"
5299 );
5300  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5301  CPPUNIT_ASSERT(delta == mutabor::microseconds(200000));
5302  mutabor::CurrentTime += delta;
5303 
5304  delta = in -> PrepareNextEvent();
5305  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5306  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5307  CPPUNIT_ASSERT(delta == mutabor::microseconds(146280));
5308  mutabor::CurrentTime += delta;
5309 
5310  delta = in -> PrepareNextEvent();
5311  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5312  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5313  CPPUNIT_ASSERT(delta == mutabor::microseconds(148080));
5314  mutabor::CurrentTime += delta;
5315 
5316  delta = in -> PrepareNextEvent();
5317  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5318  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5319  CPPUNIT_ASSERT(delta == mutabor::microseconds(150000));
5320  mutabor::CurrentTime += delta;
5321 
5322  delta = in -> PrepareNextEvent();
5323  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5324  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5325  CPPUNIT_ASSERT(delta == mutabor::microseconds(151800));
5326  mutabor::CurrentTime += delta;
5327 
5328  delta = in -> PrepareNextEvent();
5329  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5330  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5331  CPPUNIT_ASSERT(delta == mutabor::microseconds(153840));
5332  mutabor::CurrentTime += delta;
5333 
5334  delta = in -> PrepareNextEvent();
5335  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5336  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5337  CPPUNIT_ASSERT(delta == mutabor::microseconds(155760));
5338  mutabor::CurrentTime += delta;
5339 
5340  delta = in -> PrepareNextEvent();
5341  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5342  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5343  CPPUNIT_ASSERT(delta == mutabor::microseconds(157800));
5344  mutabor::CurrentTime += delta;
5345 
5346  delta = in -> PrepareNextEvent();
5347  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5348  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5349  CPPUNIT_ASSERT(delta == mutabor::microseconds(159960));
5350  mutabor::CurrentTime += delta;
5351 
5352  delta = in -> PrepareNextEvent();
5353  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5354  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5355  CPPUNIT_ASSERT(delta == mutabor::microseconds(12104960));
5356  mutabor::CurrentTime += delta;
5357 
5358  delta = in -> PrepareNextEvent();
5359  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5360 
5361  CheckStr = (
5362 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5363 " 72 r 6b k 00 · 00 · 02 · 37 7 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5364 )
5365  + DataStr + (
5366 " 56 V 93 · 34 4 7f · e9 · 58 X 83 · 34 4 40 @ 00 · ff · 2f / 00 ·\n"
5367 );
5368  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5369  CPPUNIT_ASSERT(delta == mutabor::microseconds(13510000));
5370  mutabor::CurrentTime += delta;
5371 
5372  delta = in -> PrepareNextEvent();
5373  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5374  CheckStr = (
5375 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5376 " 72 r 6b k 00 · 00 · 02 · 3c < 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5377 )
5378  + DataStr + (
5379 " 56 V 93 · 34 4 7f · e9 · 58 X 83 · 34 4 40 @ e9 · 46 F 80 · 3c < 7f · 00 · ff ·\n"
5380 " 2f / 00 ·\n"
5381 );
5382  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5383  CPPUNIT_ASSERT(delta == mutabor::InputDeviceClass::NO_DELTA());
5384 
5385 
5386 
5387  in->Close();
5388  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5389 
5390  out->Close(true);
5391  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5392 
5393 
5394 
5395  // First check: Input device provides the correct delta times
5396 
5398  mutabor::CurrentTime = mutabor::microseconds(0);
5399 
5400  CPPUNIT_ASSERT( in );
5401  in -> SetName((DESTDIR "/test_output.mid"));
5402  out -> SetName((DESTDIR "/test_output2.mid"));
5403 
5404 
5405 // in -> Play(wxTHREAD_JOINABLE);
5407 
5408 
5412  CheckStr = (
5413 " 4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 02 · 00 · 01 · e7 · 28 ( 4d M 54 T\n"
5414 " 72 r 6b k 00 · 00 · 02 · 5c \\ 00 · ff · 51 Q 03 · 07 · a1 · 20 00 · ff · 58 X\n"
5415 " 04 · 04 · 02 · 18 · 08 · 00 · e0 · 00 · 40 @ 00 · b0 · 7a z 00 · 00 · b0 · 7d }\n"
5416 " 00 · 00 · b0 · 7f · 00 · 00 · b0 · 65 e 00 · 00 · b0 · 64 d 00 · 00 · b0 · 06 ·\n"
5417 " 02 · 00 · b0 · 26 & 00 · 00 · e1 · 00 · 40 @ 00 · b1 · 7a z 00 · 00 · b1 · 7d }\n"
5418 " 00 · 00 · b1 · 7f · 00 · 00 · b1 · 65 e 00 · 00 · b1 · 64 d 00 · 00 · b1 · 06 ·\n"
5419 " 02 · 00 · b1 · 26 & 00 · 00 · e2 · 00 · 40 @ 00 · b2 · 7a z 00 · 00 · b2 · 7d }\n"
5420 " 00 · 00 · b2 · 7f · 00 · 00 · b2 · 65 e 00 · 00 · b2 · 64 d 00 · 00 · b2 · 06 ·\n"
5421 " 02 · 00 · b2 · 26 & 00 · 00 · e3 · 00 · 40 @ 00 · b3 · 7a z 00 · 00 · b3 · 7d }\n"
5422 " 00 · 00 · b3 · 7f · 00 · 00 · b3 · 65 e 00 · 00 · b3 · 64 d 00 · 00 · b3 · 06 ·\n"
5423 " 02 · 00 · b3 · 26 & 00 · 00 · e4 · 00 · 40 @ 00 · b4 · 7a z 00 · 00 · b4 · 7d }\n"
5424 " 00 · 00 · b4 · 7f · 00 · 00 · b4 · 65 e 00 · 00 · b4 · 64 d 00 · 00 · b4 · 06 ·\n"
5425 " 02 · 00 · b4 · 26 & 00 · 00 · e5 · 00 · 40 @ 00 · b5 · 7a z 00 · 00 · b5 · 7d }\n"
5426 " 00 · 00 · b5 · 7f · 00 · 00 · b5 · 65 e 00 · 00 · b5 · 64 d 00 · 00 · b5 · 06 ·\n"
5427 " 02 · 00 · b5 · 26 & 00 · 00 · e6 · 00 · 40 @ 00 · b6 · 7a z 00 · 00 · b6 · 7d }\n"
5428 " 00 · 00 · b6 · 7f · 00 · 00 · b6 · 65 e 00 · 00 · b6 · 64 d 00 · 00 · b6 · 06 ·\n"
5429 " 02 · 00 · b6 · 26 & 00 · 00 · e7 · 00 · 40 @ 00 · b7 · 7a z 00 · 00 · b7 · 7d }\n"
5430 " 00 · 00 · b7 · 7f · 00 · 00 · b7 · 65 e 00 · 00 · b7 · 64 d 00 · 00 · b7 · 06 ·\n"
5431 " 02 · 00 · b7 · 26 & 00 · 00 · e8 · 00 · 40 @ 00 · b8 · 7a z 00 · 00 · b8 · 7d }\n"
5432 " 00 · 00 · b8 · 7f · 00 · 00 · b8 · 65 e 00 · 00 · b8 · 64 d 00 · 00 · b8 · 06 ·\n"
5433 " 02 · 00 · b8 · 26 & 00 · 00 · e9 · 00 · 40 @ 00 · b9 · 7a z 00 · 00 · b9 · 7d }\n"
5434 " 00 · 00 · b9 · 7f · 00 · 00 · b9 · 65 e 00 · 00 · b9 · 64 d 00 · 00 · b9 · 06 ·\n"
5435 " 02 · 00 · b9 · 26 & 00 · 00 · ea · 00 · 40 @ 00 · ba · 7a z 00 · 00 · ba · 7d }\n"
5436 " 00 · 00 · ba · 7f · 00 · 00 · ba · 65 e 00 · 00 · ba · 64 d 00 · 00 · ba · 06 ·\n"
5437 " 02 · 00 · ba · 26 & 00 · 00 · eb · 00 · 40 @ 00 · bb · 7a z 00 · 00 · bb · 7d }\n"
5438 " 00 · 00 · bb · 7f · 00 · 00 · bb · 65 e 00 · 00 · bb · 64 d 00 · 00 · bb · 06 ·\n"
5439 " 02 · 00 · bb · 26 & 00 · 00 · ec · 00 · 40 @ 00 · bc · 7a z 00 · 00 · bc · 7d }\n"
5440 " 00 · 00 · bc · 7f · 00 · 00 · bc · 65 e 00 · 00 · bc · 64 d 00 · 00 · bc · 06 ·\n"
5441 " 02 · 00 · bc · 26 & 00 · 00 · ed · 00 · 40 @ 00 · bd · 7a z 00 · 00 · bd · 7d }\n"
5442 " 00 · 00 · bd · 7f · 00 · 00 · bd · 65 e 00 · 00 · bd · 64 d 00 · 00 · bd · 06 ·\n"
5443 " 02 · 00 · bd · 26 & 00 · 00 · ee · 00 · 40 @ 00 · be · 7a z 00 · 00 · be · 7d }\n"
5444 " 00 · 00 · be · 7f · 00 · 00 · be · 65 e 00 · 00 · be · 64 d 00 · 00 · be · 06 ·\n"
5445 " 02 · 00 · be · 26 & 00 · 00 · ef · 00 · 40 @ 00 · bf · 7a z 00 · 00 · bf · 7d }\n"
5446 " 00 · 00 · bf · 7f · 00 · 00 · bf · 65 e 00 · 00 · bf · 64 d 00 · 00 · bf · 06 ·\n"
5447 " 02 · 00 · bf · 26 & 00 · 81 · a9 · 4f O 90 · 3c < 7f · 00 · b0 · 65 e 00 · 00 ·\n"
5448 " b0 · 64 d 00 · d2 · 67 g 91 · 40 @ 1f · 00 · b1 · 65 e 00 · 00 · b1 · 64 d 00 ·\n"
5449 " d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? 00 · b2 · 65 e 00 · 00 · b2 ·\n"
5450 " 64 d 00 · d0 · 5a Z 82 · 43 C 40 @ ec · 56 V 93 · 34 4 7f · 00 · b3 · 65 e 00 ·\n"
5451 " 00 · b3 · 64 d 00 · e9 · 58 X 83 · 34 4 40 @ e9 · 46 F 80 · 3c < 7f · 00 · ff ·\n"
5452 " 2f / 00 ·\n"
5453 );
5454 
5455  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5456 }
static boost::chrono::microseconds NO_DELTA()
Definition: Device.h:1254
#define string
bool CheckOut(std::string s, int line, const char *file)
#define DEBUGLOG(level,...)
Definition: debug.h:294
mutabor::InputMidiFile * in
mutabor::InputDevice inguard
virtual void Close()
Definition: DevMidF.cpp:748
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:244
mutabor::Route route
Definition: DevMidFTest.h:245
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
static InputDevice CreateInput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1407
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
mutabor::Box box
Definition: DevMidFTest.h:246

◆ testBoxMidiIn()

void InputMidiFileTest::testBoxMidiIn ( )

Definiert in Zeile 5458 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::initialize_box_data(), name, out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size, string und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testPlayMidi().

5459 {
5460 #ifdef DEBUG
5461 // mutabor::mutabor_debug_flags.timer = true;
5462 // mutabor::mutabor_debug_flags.midiio = true;
5463 // mutabor::mutabor_debug_flags.midifile = true;
5464 #endif
5465 
5466  // input device is set up during setUp
5467  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
5468  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
5469  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
5470  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
5471 
5474  mutabor::ScopedBox box(NULL);
5477 
5480  connect(route,box);
5482 
5483  std::string name = srcdir;
5484  name += ("/midiin.mut");
5485 
5486  std::ifstream file(name.c_str());
5487  CPPUNIT_ASSERT(file.is_open());
5488  file.seekg(0, std::ios::end);
5489  std::streampos length = file.tellg();
5490  file.seekg(0, std::ios::beg);
5491  char * logic_string = (char *) malloc((size_t)length+1);
5492  CPPUNIT_ASSERT(file.read(logic_string, length).gcount() == length);
5493  logic_string[length] = 0;
5494 
5495  MyCompileCallback callback;
5496  CPPUNIT_ASSERT(box->Compile(&callback, logic_string));
5497 
5498  free(logic_string);
5499  logic_string = NULL;
5500 
5501  route->SetActive(true);
5502 
5503 
5505  out = new midicmnOutputDevice(("Test"));
5506  out->SetBendingRange(2);
5507  //out = new midicmnOutputDevice(3,("Test"));
5508  guard = out;
5509 
5510  connect(route,guard);
5511  route->SetOutputFrom (0);
5512  route->SetOutputTo (15);
5513  route->OutputAvoidDrumChannel (true);
5514 
5515  connect(route, in);
5516 
5517  CPPUNIT_ASSERT( in );
5518  in -> SetName(SRCDIR "/midiin.mid");
5519 
5520 
5521  // First check: Input device provides the correct delta times
5523  mutabor::CurrentTime = mutabor::microseconds(0);
5524 
5525 // in -> Play(wxTHREAD_JOINABLE);
5527 
5528  CPPUNIT_ASSERT(out->Check((
5529 "0 Opened...\n"
5530 "0 0: e0 00 40\n"
5531 "0 0: b0 7a 00\n"
5532 "0 0: b0 7d 00\n"
5533 "0 0: b0 7f 00\n"
5534 "0 0: b0 65 00\n"
5535 "0 0: b0 64 00\n"
5536 "0 0: b0 06 02\n"
5537 "0 0: b0 26 00\n"
5538 "0 1: e1 00 40\n"
5539 "0 1: b1 7a 00\n"
5540 "0 1: b1 7d 00\n"
5541 "0 1: b1 7f 00\n"
5542 "0 1: b1 65 00\n"
5543 "0 1: b1 64 00\n"
5544 "0 1: b1 06 02\n"
5545 "0 1: b1 26 00\n"
5546 "0 2: e2 00 40\n"
5547 "0 2: b2 7a 00\n"
5548 "0 2: b2 7d 00\n"
5549 "0 2: b2 7f 00\n"
5550 "0 2: b2 65 00\n"
5551 "0 2: b2 64 00\n"
5552 "0 2: b2 06 02\n"
5553 "0 2: b2 26 00\n"
5554 "0 3: e3 00 40\n"
5555 "0 3: b3 7a 00\n"
5556 "0 3: b3 7d 00\n"
5557 "0 3: b3 7f 00\n"
5558 "0 3: b3 65 00\n"
5559 "0 3: b3 64 00\n"
5560 "0 3: b3 06 02\n"
5561 "0 3: b3 26 00\n"
5562 "0 4: e4 00 40\n"
5563 "0 4: b4 7a 00\n"
5564 "0 4: b4 7d 00\n"
5565 "0 4: b4 7f 00\n"
5566 "0 4: b4 65 00\n"
5567 "0 4: b4 64 00\n"
5568 "0 4: b4 06 02\n"
5569 "0 4: b4 26 00\n"
5570 "0 5: e5 00 40\n"
5571 "0 5: b5 7a 00\n"
5572 "0 5: b5 7d 00\n"
5573 "0 5: b5 7f 00\n"
5574 "0 5: b5 65 00\n"
5575 "0 5: b5 64 00\n"
5576 "0 5: b5 06 02\n"
5577 "0 5: b5 26 00\n"
5578 "0 6: e6 00 40\n"
5579 "0 6: b6 7a 00\n"
5580 "0 6: b6 7d 00\n"
5581 "0 6: b6 7f 00\n"
5582 "0 6: b6 65 00\n"
5583 "0 6: b6 64 00\n"
5584 "0 6: b6 06 02\n"
5585 "0 6: b6 26 00\n"
5586 "0 7: e7 00 40\n"
5587 "0 7: b7 7a 00\n"
5588 "0 7: b7 7d 00\n"
5589 "0 7: b7 7f 00\n"
5590 "0 7: b7 65 00\n"
5591 "0 7: b7 64 00\n"
5592 "0 7: b7 06 02\n"
5593 "0 7: b7 26 00\n"
5594 "0 8: e8 00 40\n"
5595 "0 8: b8 7a 00\n"
5596 "0 8: b8 7d 00\n"
5597 "0 8: b8 7f 00\n"
5598 "0 8: b8 65 00\n"
5599 "0 8: b8 64 00\n"
5600 "0 8: b8 06 02\n"
5601 "0 8: b8 26 00\n"
5602 "0 9: e9 00 40\n"
5603 "0 9: b9 7a 00\n"
5604 "0 9: b9 7d 00\n"
5605 "0 9: b9 7f 00\n"
5606 "0 9: b9 65 00\n"
5607 "0 9: b9 64 00\n"
5608 "0 9: b9 06 02\n"
5609 "0 9: b9 26 00\n"
5610 "0 10: ea 00 40\n"
5611 "0 10: ba 7a 00\n"
5612 "0 10: ba 7d 00\n"
5613 "0 10: ba 7f 00\n"
5614 "0 10: ba 65 00\n"
5615 "0 10: ba 64 00\n"
5616 "0 10: ba 06 02\n"
5617 "0 10: ba 26 00\n"
5618 "0 11: eb 00 40\n"
5619 "0 11: bb 7a 00\n"
5620 "0 11: bb 7d 00\n"
5621 "0 11: bb 7f 00\n"
5622 "0 11: bb 65 00\n"
5623 "0 11: bb 64 00\n"
5624 "0 11: bb 06 02\n"
5625 "0 11: bb 26 00\n"
5626 "0 12: ec 00 40\n"
5627 "0 12: bc 7a 00\n"
5628 "0 12: bc 7d 00\n"
5629 "0 12: bc 7f 00\n"
5630 "0 12: bc 65 00\n"
5631 "0 12: bc 64 00\n"
5632 "0 12: bc 06 02\n"
5633 "0 12: bc 26 00\n"
5634 "0 13: ed 00 40\n"
5635 "0 13: bd 7a 00\n"
5636 "0 13: bd 7d 00\n"
5637 "0 13: bd 7f 00\n"
5638 "0 13: bd 65 00\n"
5639 "0 13: bd 64 00\n"
5640 "0 13: bd 06 02\n"
5641 "0 13: bd 26 00\n"
5642 "0 14: ee 00 40\n"
5643 "0 14: be 7a 00\n"
5644 "0 14: be 7d 00\n"
5645 "0 14: be 7f 00\n"
5646 "0 14: be 65 00\n"
5647 "0 14: be 64 00\n"
5648 "0 14: be 06 02\n"
5649 "0 14: be 26 00\n"
5650 "0 15: ef 00 40\n"
5651 "0 15: bf 7a 00\n"
5652 "0 15: bf 7d 00\n"
5653 "0 15: bf 7f 00\n"
5654 "0 15: bf 65 00\n"
5655 "0 15: bf 64 00\n"
5656 "0 15: bf 06 02\n"
5657 "0 15: bf 26 00\n"
5658 "0 0: 90 3c 7f\n"
5659 "1000 0: b0 30 01\n"
5660 "2000 0: b0 30 00\n"
5661 "2000 0: 90 01 7f\n"
5662 "200000 1: 91 3c 7f\n"
5663 "200000 1: b1 30 00\n"
5664 "200000 0: 80 01 7f\n"
5665 "544000 0: 80 3c 40\n"
5666 "545000 1: 81 3c 40\n"
5667 "546000 ...closed.\n"
5668 ),__LINE__,(__FILE__)));
5669 
5670 }
#define string
mutabor::Route route
mutabor::InputDevice in
Definition: DevMidFTest.h:85
void initialize_box_data()
Definition: Box.cpp:1107
const char * name
Definition: TabGen.cpp:59
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ testBug019010()

void InputMidiFileTest::testBug019010 ( )

Definiert in Zeile 935 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testPlayMidi().

936 {
937 #ifdef DEBUG
938 // mutabor_debug_flags.timer = true;
939 // mutabor_debug_flags.midiio = true;
940 // mutabor_debug_flags.midifile = true;
941 #endif
942 
943  // input device is set up during setUp
944  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
945  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
946  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
947  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
948 
951  mutabor::ScopedBox box(NULL);
954 
957  connect(route,box);
958 
960  out = new midicmnOutputDevice(("Test"));
961  out->SetBendingRange(2);
962  //out = new midicmnOutputDevice(3,("Test"));
963  guard = out;
964 
965  connect(route,guard);
966  route->SetOutputFrom (0);
967  route->SetOutputTo (15);
968  route->OutputAvoidDrumChannel (true);
969 
970  connect(route, in);
971 
972  CPPUNIT_ASSERT( in );
973  in -> SetName(SRCDIR "/bug019010.mid");
974 
975 
976  // First check: Input device provides the correct delta times
978  mutabor::CurrentTime = mutabor::microseconds(0);
979 
980 // in -> Play(wxTHREAD_JOINABLE);
982 
983  CPPUNIT_ASSERT(out->Check((
984 "0 Opened...\n"
985 "0 0: e0 00 40\n"
986 "0 0: b0 7a 00\n"
987 "0 0: b0 7d 00\n"
988 "0 0: b0 7f 00\n"
989 "0 0: b0 65 00\n"
990 "0 0: b0 64 00\n"
991 "0 0: b0 06 02\n"
992 "0 0: b0 26 00\n"
993 "0 1: e1 00 40\n"
994 "0 1: b1 7a 00\n"
995 "0 1: b1 7d 00\n"
996 "0 1: b1 7f 00\n"
997 "0 1: b1 65 00\n"
998 "0 1: b1 64 00\n"
999 "0 1: b1 06 02\n"
1000 "0 1: b1 26 00\n"
1001 "0 2: e2 00 40\n"
1002 "0 2: b2 7a 00\n"
1003 "0 2: b2 7d 00\n"
1004 "0 2: b2 7f 00\n"
1005 "0 2: b2 65 00\n"
1006 "0 2: b2 64 00\n"
1007 "0 2: b2 06 02\n"
1008 "0 2: b2 26 00\n"
1009 "0 3: e3 00 40\n"
1010 "0 3: b3 7a 00\n"
1011 "0 3: b3 7d 00\n"
1012 "0 3: b3 7f 00\n"
1013 "0 3: b3 65 00\n"
1014 "0 3: b3 64 00\n"
1015 "0 3: b3 06 02\n"
1016 "0 3: b3 26 00\n"
1017 "0 4: e4 00 40\n"
1018 "0 4: b4 7a 00\n"
1019 "0 4: b4 7d 00\n"
1020 "0 4: b4 7f 00\n"
1021 "0 4: b4 65 00\n"
1022 "0 4: b4 64 00\n"
1023 "0 4: b4 06 02\n"
1024 "0 4: b4 26 00\n"
1025 "0 5: e5 00 40\n"
1026 "0 5: b5 7a 00\n"
1027 "0 5: b5 7d 00\n"
1028 "0 5: b5 7f 00\n"
1029 "0 5: b5 65 00\n"
1030 "0 5: b5 64 00\n"
1031 "0 5: b5 06 02\n"
1032 "0 5: b5 26 00\n"
1033 "0 6: e6 00 40\n"
1034 "0 6: b6 7a 00\n"
1035 "0 6: b6 7d 00\n"
1036 "0 6: b6 7f 00\n"
1037 "0 6: b6 65 00\n"
1038 "0 6: b6 64 00\n"
1039 "0 6: b6 06 02\n"
1040 "0 6: b6 26 00\n"
1041 "0 7: e7 00 40\n"
1042 "0 7: b7 7a 00\n"
1043 "0 7: b7 7d 00\n"
1044 "0 7: b7 7f 00\n"
1045 "0 7: b7 65 00\n"
1046 "0 7: b7 64 00\n"
1047 "0 7: b7 06 02\n"
1048 "0 7: b7 26 00\n"
1049 "0 8: e8 00 40\n"
1050 "0 8: b8 7a 00\n"
1051 "0 8: b8 7d 00\n"
1052 "0 8: b8 7f 00\n"
1053 "0 8: b8 65 00\n"
1054 "0 8: b8 64 00\n"
1055 "0 8: b8 06 02\n"
1056 "0 8: b8 26 00\n"
1057 "0 9: e9 00 40\n"
1058 "0 9: b9 7a 00\n"
1059 "0 9: b9 7d 00\n"
1060 "0 9: b9 7f 00\n"
1061 "0 9: b9 65 00\n"
1062 "0 9: b9 64 00\n"
1063 "0 9: b9 06 02\n"
1064 "0 9: b9 26 00\n"
1065 "0 10: ea 00 40\n"
1066 "0 10: ba 7a 00\n"
1067 "0 10: ba 7d 00\n"
1068 "0 10: ba 7f 00\n"
1069 "0 10: ba 65 00\n"
1070 "0 10: ba 64 00\n"
1071 "0 10: ba 06 02\n"
1072 "0 10: ba 26 00\n"
1073 "0 11: eb 00 40\n"
1074 "0 11: bb 7a 00\n"
1075 "0 11: bb 7d 00\n"
1076 "0 11: bb 7f 00\n"
1077 "0 11: bb 65 00\n"
1078 "0 11: bb 64 00\n"
1079 "0 11: bb 06 02\n"
1080 "0 11: bb 26 00\n"
1081 "0 12: ec 00 40\n"
1082 "0 12: bc 7a 00\n"
1083 "0 12: bc 7d 00\n"
1084 "0 12: bc 7f 00\n"
1085 "0 12: bc 65 00\n"
1086 "0 12: bc 64 00\n"
1087 "0 12: bc 06 02\n"
1088 "0 12: bc 26 00\n"
1089 "0 13: ed 00 40\n"
1090 "0 13: bd 7a 00\n"
1091 "0 13: bd 7d 00\n"
1092 "0 13: bd 7f 00\n"
1093 "0 13: bd 65 00\n"
1094 "0 13: bd 64 00\n"
1095 "0 13: bd 06 02\n"
1096 "0 13: bd 26 00\n"
1097 "0 14: ee 00 40\n"
1098 "0 14: be 7a 00\n"
1099 "0 14: be 7d 00\n"
1100 "0 14: be 7f 00\n"
1101 "0 14: be 65 00\n"
1102 "0 14: be 64 00\n"
1103 "0 14: be 06 02\n"
1104 "0 14: be 26 00\n"
1105 "0 15: ef 00 40\n"
1106 "0 15: bf 7a 00\n"
1107 "0 15: bf 7d 00\n"
1108 "0 15: bf 7f 00\n"
1109 "0 15: bf 65 00\n"
1110 "0 15: bf 64 00\n"
1111 "0 15: bf 06 02\n"
1112 "0 15: bf 26 00\n"
1113 "21711080000 0: 90 3c 7f\n"
1114 "32310240000 1: 91 40 1f\n"
1115 "42640240000 1: 81 40 40\n"
1116 "52970240000 2: 92 43 3f\n"
1117 "63300240000 2: 82 43 40\n"
1118 "77209720000 3: 93 34 7f\n"
1119 "90738200000 3: 83 34 40\n"
1120 "104248200000 0: 80 3c 7f\n"
1121 "104248200000 ...closed.\n"
1122 ),__LINE__,(__FILE__)));
1123 
1124  sleep(1);
1125 
1127 
1128  CPPUNIT_ASSERT(out->Check((
1129 "0 Opened...\n"
1130 "0 0: e0 00 40\n"
1131 "0 0: b0 7a 00\n"
1132 "0 0: b0 7d 00\n"
1133 "0 0: b0 7f 00\n"
1134 "0 0: b0 65 00\n"
1135 "0 0: b0 64 00\n"
1136 "0 0: b0 06 02\n"
1137 "0 0: b0 26 00\n"
1138 "0 1: e1 00 40\n"
1139 "0 1: b1 7a 00\n"
1140 "0 1: b1 7d 00\n"
1141 "0 1: b1 7f 00\n"
1142 "0 1: b1 65 00\n"
1143 "0 1: b1 64 00\n"
1144 "0 1: b1 06 02\n"
1145 "0 1: b1 26 00\n"
1146 "0 2: e2 00 40\n"
1147 "0 2: b2 7a 00\n"
1148 "0 2: b2 7d 00\n"
1149 "0 2: b2 7f 00\n"
1150 "0 2: b2 65 00\n"
1151 "0 2: b2 64 00\n"
1152 "0 2: b2 06 02\n"
1153 "0 2: b2 26 00\n"
1154 "0 3: e3 00 40\n"
1155 "0 3: b3 7a 00\n"
1156 "0 3: b3 7d 00\n"
1157 "0 3: b3 7f 00\n"
1158 "0 3: b3 65 00\n"
1159 "0 3: b3 64 00\n"
1160 "0 3: b3 06 02\n"
1161 "0 3: b3 26 00\n"
1162 "0 4: e4 00 40\n"
1163 "0 4: b4 7a 00\n"
1164 "0 4: b4 7d 00\n"
1165 "0 4: b4 7f 00\n"
1166 "0 4: b4 65 00\n"
1167 "0 4: b4 64 00\n"
1168 "0 4: b4 06 02\n"
1169 "0 4: b4 26 00\n"
1170 "0 5: e5 00 40\n"
1171 "0 5: b5 7a 00\n"
1172 "0 5: b5 7d 00\n"
1173 "0 5: b5 7f 00\n"
1174 "0 5: b5 65 00\n"
1175 "0 5: b5 64 00\n"
1176 "0 5: b5 06 02\n"
1177 "0 5: b5 26 00\n"
1178 "0 6: e6 00 40\n"
1179 "0 6: b6 7a 00\n"
1180 "0 6: b6 7d 00\n"
1181 "0 6: b6 7f 00\n"
1182 "0 6: b6 65 00\n"
1183 "0 6: b6 64 00\n"
1184 "0 6: b6 06 02\n"
1185 "0 6: b6 26 00\n"
1186 "0 7: e7 00 40\n"
1187 "0 7: b7 7a 00\n"
1188 "0 7: b7 7d 00\n"
1189 "0 7: b7 7f 00\n"
1190 "0 7: b7 65 00\n"
1191 "0 7: b7 64 00\n"
1192 "0 7: b7 06 02\n"
1193 "0 7: b7 26 00\n"
1194 "0 8: e8 00 40\n"
1195 "0 8: b8 7a 00\n"
1196 "0 8: b8 7d 00\n"
1197 "0 8: b8 7f 00\n"
1198 "0 8: b8 65 00\n"
1199 "0 8: b8 64 00\n"
1200 "0 8: b8 06 02\n"
1201 "0 8: b8 26 00\n"
1202 "0 9: e9 00 40\n"
1203 "0 9: b9 7a 00\n"
1204 "0 9: b9 7d 00\n"
1205 "0 9: b9 7f 00\n"
1206 "0 9: b9 65 00\n"
1207 "0 9: b9 64 00\n"
1208 "0 9: b9 06 02\n"
1209 "0 9: b9 26 00\n"
1210 "0 10: ea 00 40\n"
1211 "0 10: ba 7a 00\n"
1212 "0 10: ba 7d 00\n"
1213 "0 10: ba 7f 00\n"
1214 "0 10: ba 65 00\n"
1215 "0 10: ba 64 00\n"
1216 "0 10: ba 06 02\n"
1217 "0 10: ba 26 00\n"
1218 "0 11: eb 00 40\n"
1219 "0 11: bb 7a 00\n"
1220 "0 11: bb 7d 00\n"
1221 "0 11: bb 7f 00\n"
1222 "0 11: bb 65 00\n"
1223 "0 11: bb 64 00\n"
1224 "0 11: bb 06 02\n"
1225 "0 11: bb 26 00\n"
1226 "0 12: ec 00 40\n"
1227 "0 12: bc 7a 00\n"
1228 "0 12: bc 7d 00\n"
1229 "0 12: bc 7f 00\n"
1230 "0 12: bc 65 00\n"
1231 "0 12: bc 64 00\n"
1232 "0 12: bc 06 02\n"
1233 "0 12: bc 26 00\n"
1234 "0 13: ed 00 40\n"
1235 "0 13: bd 7a 00\n"
1236 "0 13: bd 7d 00\n"
1237 "0 13: bd 7f 00\n"
1238 "0 13: bd 65 00\n"
1239 "0 13: bd 64 00\n"
1240 "0 13: bd 06 02\n"
1241 "0 13: bd 26 00\n"
1242 "0 14: ee 00 40\n"
1243 "0 14: be 7a 00\n"
1244 "0 14: be 7d 00\n"
1245 "0 14: be 7f 00\n"
1246 "0 14: be 65 00\n"
1247 "0 14: be 64 00\n"
1248 "0 14: be 06 02\n"
1249 "0 14: be 26 00\n"
1250 "0 15: ef 00 40\n"
1251 "0 15: bf 7a 00\n"
1252 "0 15: bf 7d 00\n"
1253 "0 15: bf 7f 00\n"
1254 "0 15: bf 65 00\n"
1255 "0 15: bf 64 00\n"
1256 "0 15: bf 06 02\n"
1257 "0 15: bf 26 00\n"
1258 "21711080000 0: 90 3c 7f\n"
1259 "32310240000 1: 91 40 1f\n"
1260 "42640240000 1: 81 40 40\n"
1261 "52970240000 2: 92 43 3f\n"
1262 "63300240000 2: 82 43 40\n"
1263 "77209720000 3: 93 34 7f\n"
1264 "90738200000 3: 83 34 40\n"
1265 "104248200000 0: 80 3c 7f\n"
1266 "104248200000 ...closed.\n"
1267 ),__LINE__,(__FILE__)));
1268 }
mutabor::Route route
mutabor::InputDevice in
Definition: DevMidFTest.h:85
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ testBug019010_2()

void InputMidiFileTest::testBug019010_2 ( )

Definiert in Zeile 597 der Datei DevMidFTest.cpp.

Benutzt box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::OutputDeviceClass::Close(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, DEBUGLOG, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::InputDeviceClass::NO_DELTA(), out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testPlayMidi().

598 {
599 #ifdef DEBUG
600 // mutabor_debug_flags.timer = true;
601 // mutabor_debug_flags.midiio = true;
602 // mutabor_debug_flags.midifile = true;
603 #endif
604 
605  // input device is created during setUp
606  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
607  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
608  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
609  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
610 
613  mutabor::ScopedBox box(NULL);
616 
619  connect(route,box);
620 
622  out = new midicmnOutputDevice(("Test"));
623  out->SetBendingRange(2);
624  //out = new midicmnOutputDevice(3,("Test"));
625  guard = out;
626 
627  connect(route,guard);
628  route->SetOutputFrom (0);
629  route->SetOutputTo (15);
630  route->OutputAvoidDrumChannel (true);
631 
632  connect(route, in);
633 
634  CPPUNIT_ASSERT( in );
635  in -> SetName(SRCDIR "/bug019010.mid");
636 
637 
638  // First check: Input device provides the correct delta times
640  mutabor::CurrentTime = mutabor::microseconds(0);
641 
642  CPPUNIT_ASSERT((out -> Open()));
643  CPPUNIT_ASSERT((in -> Open()));
644  CPPUNIT_ASSERT(out->Check(("0 Opened...\n"
645 "0 0: e0 00 40\n"
646 "0 0: b0 7a 00\n"
647 "0 0: b0 7d 00\n"
648 "0 0: b0 7f 00\n"
649 "0 0: b0 65 00\n"
650 "0 0: b0 64 00\n"
651 "0 0: b0 06 02\n"
652 "0 0: b0 26 00\n"
653 "0 1: e1 00 40\n"
654 "0 1: b1 7a 00\n"
655 "0 1: b1 7d 00\n"
656 "0 1: b1 7f 00\n"
657 "0 1: b1 65 00\n"
658 "0 1: b1 64 00\n"
659 "0 1: b1 06 02\n"
660 "0 1: b1 26 00\n"
661 "0 2: e2 00 40\n"
662 "0 2: b2 7a 00\n"
663 "0 2: b2 7d 00\n"
664 "0 2: b2 7f 00\n"
665 "0 2: b2 65 00\n"
666 "0 2: b2 64 00\n"
667 "0 2: b2 06 02\n"
668 "0 2: b2 26 00\n"
669 "0 3: e3 00 40\n"
670 "0 3: b3 7a 00\n"
671 "0 3: b3 7d 00\n"
672 "0 3: b3 7f 00\n"
673 "0 3: b3 65 00\n"
674 "0 3: b3 64 00\n"
675 "0 3: b3 06 02\n"
676 "0 3: b3 26 00\n"
677 "0 4: e4 00 40\n"
678 "0 4: b4 7a 00\n"
679 "0 4: b4 7d 00\n"
680 "0 4: b4 7f 00\n"
681 "0 4: b4 65 00\n"
682 "0 4: b4 64 00\n"
683 "0 4: b4 06 02\n"
684 "0 4: b4 26 00\n"
685 "0 5: e5 00 40\n"
686 "0 5: b5 7a 00\n"
687 "0 5: b5 7d 00\n"
688 "0 5: b5 7f 00\n"
689 "0 5: b5 65 00\n"
690 "0 5: b5 64 00\n"
691 "0 5: b5 06 02\n"
692 "0 5: b5 26 00\n"
693 "0 6: e6 00 40\n"
694 "0 6: b6 7a 00\n"
695 "0 6: b6 7d 00\n"
696 "0 6: b6 7f 00\n"
697 "0 6: b6 65 00\n"
698 "0 6: b6 64 00\n"
699 "0 6: b6 06 02\n"
700 "0 6: b6 26 00\n"
701 "0 7: e7 00 40\n"
702 "0 7: b7 7a 00\n"
703 "0 7: b7 7d 00\n"
704 "0 7: b7 7f 00\n"
705 "0 7: b7 65 00\n"
706 "0 7: b7 64 00\n"
707 "0 7: b7 06 02\n"
708 "0 7: b7 26 00\n"
709 "0 8: e8 00 40\n"
710 "0 8: b8 7a 00\n"
711 "0 8: b8 7d 00\n"
712 "0 8: b8 7f 00\n"
713 "0 8: b8 65 00\n"
714 "0 8: b8 64 00\n"
715 "0 8: b8 06 02\n"
716 "0 8: b8 26 00\n"
717 "0 9: e9 00 40\n"
718 "0 9: b9 7a 00\n"
719 "0 9: b9 7d 00\n"
720 "0 9: b9 7f 00\n"
721 "0 9: b9 65 00\n"
722 "0 9: b9 64 00\n"
723 "0 9: b9 06 02\n"
724 "0 9: b9 26 00\n"
725 "0 10: ea 00 40\n"
726 "0 10: ba 7a 00\n"
727 "0 10: ba 7d 00\n"
728 "0 10: ba 7f 00\n"
729 "0 10: ba 65 00\n"
730 "0 10: ba 64 00\n"
731 "0 10: ba 06 02\n"
732 "0 10: ba 26 00\n"
733 "0 11: eb 00 40\n"
734 "0 11: bb 7a 00\n"
735 "0 11: bb 7d 00\n"
736 "0 11: bb 7f 00\n"
737 "0 11: bb 65 00\n"
738 "0 11: bb 64 00\n"
739 "0 11: bb 06 02\n"
740 "0 11: bb 26 00\n"
741 "0 12: ec 00 40\n"
742 "0 12: bc 7a 00\n"
743 "0 12: bc 7d 00\n"
744 "0 12: bc 7f 00\n"
745 "0 12: bc 65 00\n"
746 "0 12: bc 64 00\n"
747 "0 12: bc 06 02\n"
748 "0 12: bc 26 00\n"
749 "0 13: ed 00 40\n"
750 "0 13: bd 7a 00\n"
751 "0 13: bd 7d 00\n"
752 "0 13: bd 7f 00\n"
753 "0 13: bd 65 00\n"
754 "0 13: bd 64 00\n"
755 "0 13: bd 06 02\n"
756 "0 13: bd 26 00\n"
757 "0 14: ee 00 40\n"
758 "0 14: be 7a 00\n"
759 "0 14: be 7d 00\n"
760 "0 14: be 7f 00\n"
761 "0 14: be 65 00\n"
762 "0 14: be 64 00\n"
763 "0 14: be 06 02\n"
764 "0 14: be 26 00\n"
765 "0 15: ef 00 40\n"
766 "0 15: bf 7a 00\n"
767 "0 15: bf 7d 00\n"
768 "0 15: bf 7f 00\n"
769 "0 15: bf 65 00\n"
770 "0 15: bf 64 00\n"
771 "0 15: bf 06 02\n"
772 "0 15: bf 26 00\n"),__LINE__,(__FILE__)));
773 
774 // in -> Play(wxTHREAD_JOINABLE);
775 // mutabor::InputDeviceClass::BatchPlay();
776  in -> Play();
777  mutabor::microseconds delta = in -> PrepareNextEvent();
778  DEBUGLOG (midiio, "delta = %d" ,delta);
779  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
780  CPPUNIT_ASSERT(delta == mutabor::microseconds(1086));
781 
782  delta = in -> PrepareNextEvent();
783  DEBUGLOG (midiio, "delta = %d" ,delta);
784  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
785  CPPUNIT_ASSERT(delta == mutabor::microseconds(1954800));
786 
787  delta = in -> PrepareNextEvent();
788  DEBUGLOG (midiio, "delta = %d" ,delta);
789  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
790  CPPUNIT_ASSERT(delta == mutabor::microseconds(14725074));
791 
792  delta = in -> PrepareNextEvent();
793  DEBUGLOG (midiio, "delta = %d" ,delta);
794  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
795  CPPUNIT_ASSERT(delta == mutabor::microseconds(130320));
796 
797  delta = in -> PrepareNextEvent();
798  DEBUGLOG (midiio, "delta = %d" ,delta);
799  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
800  CPPUNIT_ASSERT(delta == mutabor::microseconds(130200));
801 
802  delta = in -> PrepareNextEvent();
803  DEBUGLOG (midiio, "delta = %d" ,delta);
804  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
805  CPPUNIT_ASSERT(delta == mutabor::microseconds(4769600));
806 
807  delta = in -> PrepareNextEvent();
808  DEBUGLOG (midiio, "delta = %d" ,delta);
809  CPPUNIT_ASSERT(out->Check((""
810 "0 0: 90 3c 7f\n"
811 ),
812  __LINE__,(__FILE__)));
813  CPPUNIT_ASSERT(delta == mutabor::microseconds(6287200));
814 
815  delta = in -> PrepareNextEvent();
816  DEBUGLOG (midiio, "delta = %d" ,delta);
817  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
818  CPPUNIT_ASSERT(delta == mutabor::microseconds(845040));
819 
820  delta = in -> PrepareNextEvent();
821  DEBUGLOG (midiio, "delta = %d" ,delta);
822  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
823  CPPUNIT_ASSERT(delta == mutabor::microseconds(120000));
824 
825  delta = in -> PrepareNextEvent();
826  DEBUGLOG (midiio, "delta = %d" ,delta);
827  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
828  CPPUNIT_ASSERT(delta == mutabor::microseconds(123960));
829 
830  delta = in -> PrepareNextEvent();
831  DEBUGLOG (midiio, "delta = %d" ,delta);
832  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
833  CPPUNIT_ASSERT(delta == mutabor::microseconds(3222960));
834 
835  delta = in -> PrepareNextEvent();
836  DEBUGLOG (midiio, "delta = %d" ,delta);
837  CPPUNIT_ASSERT(out->Check((
838 "0 1: 91 40 1f\n"
839 ),__LINE__,(__FILE__)));
840  CPPUNIT_ASSERT(delta == mutabor::microseconds(10330000));
841 
842  delta = in -> PrepareNextEvent();
843  DEBUGLOG (midiio, "delta = %d" ,delta);
844  CPPUNIT_ASSERT(out->Check((
845 "0 1: 81 40 40\n"
846 ),__LINE__,(__FILE__)));
847  CPPUNIT_ASSERT(delta == mutabor::microseconds(10330000));
848 
849  delta = in -> PrepareNextEvent();
850  DEBUGLOG (midiio, "delta = %d" ,delta);
851  CPPUNIT_ASSERT(out->Check((
852 "0 2: 92 43 3f\n"
853 ),__LINE__,(__FILE__)));
854  CPPUNIT_ASSERT(delta == mutabor::microseconds(10330000));
855 
856  delta = in -> PrepareNextEvent();
857  DEBUGLOG (midiio, "delta = %d" ,delta);
858  CPPUNIT_ASSERT(out->Check(("0 2: 82 43 40\n"),__LINE__,(__FILE__)));
859  CPPUNIT_ASSERT(delta == mutabor::microseconds(7809480));
860 
861  delta = in -> PrepareNextEvent();
862  DEBUGLOG (midiio, "delta = %d" ,delta);
863  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
864  CPPUNIT_ASSERT(delta == mutabor::microseconds(6100000));
865 
866  delta = in -> PrepareNextEvent();
867  DEBUGLOG (midiio, "delta = %d" ,delta);
868  CPPUNIT_ASSERT(out->Check((
869 "0 3: 93 34 7f\n"
870 ),__LINE__,(__FILE__)));
871  CPPUNIT_ASSERT(delta == mutabor::microseconds(200000));
872 
873  delta = in -> PrepareNextEvent();
874  DEBUGLOG (midiio, "delta = %d" ,delta);
875  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
876  CPPUNIT_ASSERT(delta == mutabor::microseconds(146280));
877 
878  delta = in -> PrepareNextEvent();
879  DEBUGLOG (midiio, "delta = %d" ,delta);
880  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
881  CPPUNIT_ASSERT(delta == mutabor::microseconds(148080));
882 
883  delta = in -> PrepareNextEvent();
884  DEBUGLOG (midiio, "delta = %d" ,delta);
885  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
886  CPPUNIT_ASSERT(delta == mutabor::microseconds(150000));
887 
888  delta = in -> PrepareNextEvent();
889  DEBUGLOG (midiio, "delta = %d" ,delta);
890  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
891  CPPUNIT_ASSERT(delta == mutabor::microseconds(151800));
892 
893  delta = in -> PrepareNextEvent();
894  DEBUGLOG (midiio, "delta = %d" ,delta);
895  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
896  CPPUNIT_ASSERT(delta == mutabor::microseconds(153840));
897 
898  delta = in -> PrepareNextEvent();
899  DEBUGLOG (midiio, "delta = %d" ,delta);
900  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
901  CPPUNIT_ASSERT(delta == mutabor::microseconds(155760));
902 
903  delta = in -> PrepareNextEvent();
904  DEBUGLOG (midiio, "delta = %d" ,delta);
905  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
906  CPPUNIT_ASSERT(delta == mutabor::microseconds(157800));
907 
908  delta = in -> PrepareNextEvent();
909  DEBUGLOG (midiio, "delta = %d" ,delta);
910  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
911  CPPUNIT_ASSERT(delta == mutabor::microseconds(159960));
912 
913  delta = in -> PrepareNextEvent();
914  DEBUGLOG (midiio, "delta = %d" ,delta);
915  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
916  CPPUNIT_ASSERT(delta == mutabor::microseconds(12104960));
917 
918  delta = in -> PrepareNextEvent();
919  DEBUGLOG (midiio, "delta = %d" ,delta);
920  CPPUNIT_ASSERT(out->Check(("0 3: 83 34 40\n"),__LINE__,(__FILE__)));
921  CPPUNIT_ASSERT(delta == mutabor::microseconds(13510000));
922 
923  delta = in -> PrepareNextEvent();
924  DEBUGLOG (midiio, "delta = %d" ,delta);
925  CPPUNIT_ASSERT(out->Check(("0 0: 80 3c 7f\n"),__LINE__,(__FILE__)));
926  CPPUNIT_ASSERT(delta == mutabor::InputDeviceClass::NO_DELTA());
927 
928  in->Close();
929  out->Close();
930  CPPUNIT_ASSERT(out->Check(("0 ...closed.\n"),__LINE__,(__FILE__)));
931 
932 }
static boost::chrono::microseconds NO_DELTA()
Definition: Device.h:1254
mutabor::Route route
#define DEBUGLOG(level,...)
Definition: debug.h:294
mutabor::InputDevice in
Definition: DevMidFTest.h:85
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ testControllerPlay()

void InputMidiFileTest::testControllerPlay ( )

Definiert in Zeile 1922 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size, StreamToHex(), string und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testPlayMidi().

1923 {
1924 #ifdef DEBUG
1925 // mutabor_debug_flags.timer = true;
1926 // mutabor_debug_flags.midiio = true;
1927 // mutabor_debug_flags.midifile = true;
1928 #endif
1929 
1930  // input device is set up during setUp
1931  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1932  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1933  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1934  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1935 
1938  mutabor::ScopedBox box(NULL);
1941 
1944  connect(route,box);
1945 
1947  out = new midicmnOutputDevice(("Test"));
1948  out->SetBendingRange(2);
1949  //out = new midicmnOutputDevice(3,("Test"));
1950  guard = out;
1951 
1952  connect(route,guard);
1953  route->SetOutputFrom (0);
1954  route->SetOutputTo (15);
1955  route->OutputAvoidDrumChannel (true);
1956 
1957  connect(route, in);
1958 
1959  CPPUNIT_ASSERT( in );
1960  in -> SetName(SRCDIR "/controller.mid");
1961 
1962 
1963  // First check: Input device provides the correct delta times
1965  mutabor::CurrentTime = mutabor::microseconds(0);
1966 
1967 // in -> Play(wxTHREAD_JOINABLE);
1969 
1970  CPPUNIT_ASSERT(out->Check((
1971 "0 Opened...\n"
1972 "0 0: e0 00 40\n"
1973 "0 0: b0 7a 00\n"
1974 "0 0: b0 7d 00\n"
1975 "0 0: b0 7f 00\n"
1976 "0 0: b0 65 00\n"
1977 "0 0: b0 64 00\n"
1978 "0 0: b0 06 02\n"
1979 "0 0: b0 26 00\n"
1980 "0 1: e1 00 40\n"
1981 "0 1: b1 7a 00\n"
1982 "0 1: b1 7d 00\n"
1983 "0 1: b1 7f 00\n"
1984 "0 1: b1 65 00\n"
1985 "0 1: b1 64 00\n"
1986 "0 1: b1 06 02\n"
1987 "0 1: b1 26 00\n"
1988 "0 2: e2 00 40\n"
1989 "0 2: b2 7a 00\n"
1990 "0 2: b2 7d 00\n"
1991 "0 2: b2 7f 00\n"
1992 "0 2: b2 65 00\n"
1993 "0 2: b2 64 00\n"
1994 "0 2: b2 06 02\n"
1995 "0 2: b2 26 00\n"
1996 "0 3: e3 00 40\n"
1997 "0 3: b3 7a 00\n"
1998 "0 3: b3 7d 00\n"
1999 "0 3: b3 7f 00\n"
2000 "0 3: b3 65 00\n"
2001 "0 3: b3 64 00\n"
2002 "0 3: b3 06 02\n"
2003 "0 3: b3 26 00\n"
2004 "0 4: e4 00 40\n"
2005 "0 4: b4 7a 00\n"
2006 "0 4: b4 7d 00\n"
2007 "0 4: b4 7f 00\n"
2008 "0 4: b4 65 00\n"
2009 "0 4: b4 64 00\n"
2010 "0 4: b4 06 02\n"
2011 "0 4: b4 26 00\n"
2012 "0 5: e5 00 40\n"
2013 "0 5: b5 7a 00\n"
2014 "0 5: b5 7d 00\n"
2015 "0 5: b5 7f 00\n"
2016 "0 5: b5 65 00\n"
2017 "0 5: b5 64 00\n"
2018 "0 5: b5 06 02\n"
2019 "0 5: b5 26 00\n"
2020 "0 6: e6 00 40\n"
2021 "0 6: b6 7a 00\n"
2022 "0 6: b6 7d 00\n"
2023 "0 6: b6 7f 00\n"
2024 "0 6: b6 65 00\n"
2025 "0 6: b6 64 00\n"
2026 "0 6: b6 06 02\n"
2027 "0 6: b6 26 00\n"
2028 "0 7: e7 00 40\n"
2029 "0 7: b7 7a 00\n"
2030 "0 7: b7 7d 00\n"
2031 "0 7: b7 7f 00\n"
2032 "0 7: b7 65 00\n"
2033 "0 7: b7 64 00\n"
2034 "0 7: b7 06 02\n"
2035 "0 7: b7 26 00\n"
2036 "0 8: e8 00 40\n"
2037 "0 8: b8 7a 00\n"
2038 "0 8: b8 7d 00\n"
2039 "0 8: b8 7f 00\n"
2040 "0 8: b8 65 00\n"
2041 "0 8: b8 64 00\n"
2042 "0 8: b8 06 02\n"
2043 "0 8: b8 26 00\n"
2044 "0 9: e9 00 40\n"
2045 "0 9: b9 7a 00\n"
2046 "0 9: b9 7d 00\n"
2047 "0 9: b9 7f 00\n"
2048 "0 9: b9 65 00\n"
2049 "0 9: b9 64 00\n"
2050 "0 9: b9 06 02\n"
2051 "0 9: b9 26 00\n"
2052 "0 10: ea 00 40\n"
2053 "0 10: ba 7a 00\n"
2054 "0 10: ba 7d 00\n"
2055 "0 10: ba 7f 00\n"
2056 "0 10: ba 65 00\n"
2057 "0 10: ba 64 00\n"
2058 "0 10: ba 06 02\n"
2059 "0 10: ba 26 00\n"
2060 "0 11: eb 00 40\n"
2061 "0 11: bb 7a 00\n"
2062 "0 11: bb 7d 00\n"
2063 "0 11: bb 7f 00\n"
2064 "0 11: bb 65 00\n"
2065 "0 11: bb 64 00\n"
2066 "0 11: bb 06 02\n"
2067 "0 11: bb 26 00\n"
2068 "0 12: ec 00 40\n"
2069 "0 12: bc 7a 00\n"
2070 "0 12: bc 7d 00\n"
2071 "0 12: bc 7f 00\n"
2072 "0 12: bc 65 00\n"
2073 "0 12: bc 64 00\n"
2074 "0 12: bc 06 02\n"
2075 "0 12: bc 26 00\n"
2076 "0 13: ed 00 40\n"
2077 "0 13: bd 7a 00\n"
2078 "0 13: bd 7d 00\n"
2079 "0 13: bd 7f 00\n"
2080 "0 13: bd 65 00\n"
2081 "0 13: bd 64 00\n"
2082 "0 13: bd 06 02\n"
2083 "0 13: bd 26 00\n"
2084 "0 14: ee 00 40\n"
2085 "0 14: be 7a 00\n"
2086 "0 14: be 7d 00\n"
2087 "0 14: be 7f 00\n"
2088 "0 14: be 65 00\n"
2089 "0 14: be 64 00\n"
2090 "0 14: be 06 02\n"
2091 "0 14: be 26 00\n"
2092 "0 15: ef 00 40\n"
2093 "0 15: bf 7a 00\n"
2094 "0 15: bf 7d 00\n"
2095 "0 15: bf 7f 00\n"
2096 "0 15: bf 65 00\n"
2097 "0 15: bf 64 00\n"
2098 "0 15: bf 06 02\n"
2099 "0 15: bf 26 00\n"
2100 "0 0: 90 3c 7f\n"
2101 "1000 0: b0 00 37\n"
2102 "2000 0: b0 00 6e\n"
2103 "3000 0: b0 00 00\n"
2104 "4000 0: b0 00 25\n"
2105 "5000 0: b0 01 5c\n"
2106 "6000 0: b0 01 13\n"
2107 "7000 0: b0 01 00\n"
2108 "8000 0: b0 01 4a\n"
2109 "9000 0: b0 02 01\n"
2110 "10000 0: b0 02 38\n"
2111 "11000 0: b0 02 00\n"
2112 "12000 0: b0 02 6f\n"
2113 "13000 0: b0 03 26\n"
2114 "14000 0: b0 03 5d\n"
2115 "15000 0: b0 03 00\n"
2116 "16000 0: b0 03 14\n"
2117 "17000 0: b0 04 4b\n"
2118 "18000 0: b0 04 02\n"
2119 "19000 0: b0 04 00\n"
2120 "20000 0: b0 04 39\n"
2121 "21000 0: b0 05 70\n"
2122 "22000 0: b0 05 27\n"
2123 "23000 0: b0 05 00\n"
2124 "24000 0: b0 05 5e\n"
2125 "29000 0: b0 07 3a\n"
2126 "30000 0: b0 07 71\n"
2127 "31000 0: b0 07 00\n"
2128 "32000 0: b0 07 28\n"
2129 "33000 0: b0 08 5f\n"
2130 "34000 0: b0 08 16\n"
2131 "35000 0: b0 08 00\n"
2132 "36000 0: b0 08 4d\n"
2133 "37000 0: b0 09 04\n"
2134 "38000 0: b0 09 3b\n"
2135 "39000 0: b0 09 00\n"
2136 "40000 0: b0 09 72\n"
2137 "41000 0: b0 0a 29\n"
2138 "42000 0: b0 0a 60\n"
2139 "43000 0: b0 0a 00\n"
2140 "44000 0: b0 0a 17\n"
2141 "45000 0: b0 0b 4e\n"
2142 "46000 0: b0 0b 05\n"
2143 "47000 0: b0 0b 00\n"
2144 "48000 0: b0 0b 3c\n"
2145 "49000 0: b0 0c 73\n"
2146 "50000 0: b0 0c 2a\n"
2147 "51000 0: b0 0c 00\n"
2148 "52000 0: b0 0c 61\n"
2149 "53000 0: b0 0d 18\n"
2150 "54000 0: b0 0d 4f\n"
2151 "55000 0: b0 0d 00\n"
2152 "56000 0: b0 0d 06\n"
2153 "57000 0: b0 0e 3d\n"
2154 "58000 0: b0 0e 74\n"
2155 "59000 0: b0 0e 00\n"
2156 "60000 0: b0 0e 2b\n"
2157 "61000 0: b0 0f 62\n"
2158 "62000 0: b0 0f 19\n"
2159 "63000 0: b0 0f 00\n"
2160 "64000 0: b0 0f 50\n"
2161 "65000 0: b0 10 07\n"
2162 "66000 0: b0 10 3e\n"
2163 "67000 0: b0 10 00\n"
2164 "68000 0: b0 10 75\n"
2165 "69000 0: b0 11 2c\n"
2166 "70000 0: b0 11 63\n"
2167 "71000 0: b0 11 00\n"
2168 "72000 0: b0 11 1a\n"
2169 "73000 0: b0 12 51\n"
2170 "74000 0: b0 12 08\n"
2171 "75000 0: b0 12 00\n"
2172 "76000 0: b0 12 3f\n"
2173 "77000 0: b0 13 76\n"
2174 "78000 0: b0 13 2d\n"
2175 "79000 0: b0 13 00\n"
2176 "80000 0: b0 13 64\n"
2177 "81000 0: b0 14 1b\n"
2178 "82000 0: b0 14 52\n"
2179 "83000 0: b0 14 00\n"
2180 "84000 0: b0 14 09\n"
2181 "85000 0: b0 15 40\n"
2182 "86000 0: b0 15 77\n"
2183 "87000 0: b0 15 00\n"
2184 "88000 0: b0 15 2e\n"
2185 "89000 0: b0 16 65\n"
2186 "90000 0: b0 16 1c\n"
2187 "91000 0: b0 16 00\n"
2188 "92000 0: b0 16 53\n"
2189 "93000 0: b0 17 0a\n"
2190 "94000 0: b0 17 41\n"
2191 "95000 0: b0 17 00\n"
2192 "96000 0: b0 17 78\n"
2193 "97000 0: b0 18 2f\n"
2194 "98000 0: b0 18 66\n"
2195 "99000 0: b0 18 00\n"
2196 "100000 0: b0 18 1d\n"
2197 "101000 0: b0 19 54\n"
2198 "102000 0: b0 19 0b\n"
2199 "103000 0: b0 19 00\n"
2200 "104000 0: b0 19 42\n"
2201 "105000 0: b0 1a 79\n"
2202 "106000 0: b0 1a 30\n"
2203 "107000 0: b0 1a 00\n"
2204 "108000 0: b0 1a 67\n"
2205 "109000 0: b0 1b 1e\n"
2206 "110000 0: b0 1b 55\n"
2207 "111000 0: b0 1b 00\n"
2208 "112000 0: b0 1b 0c\n"
2209 "113000 0: b0 1c 43\n"
2210 "114000 0: b0 1c 7a\n"
2211 "115000 0: b0 1c 00\n"
2212 "116000 0: b0 1c 31\n"
2213 "117000 0: b0 1d 68\n"
2214 "118000 0: b0 1d 1f\n"
2215 "119000 0: b0 1d 00\n"
2216 "120000 0: b0 1d 56\n"
2217 "121000 0: b0 1e 0d\n"
2218 "122000 0: b0 1e 44\n"
2219 "123000 0: b0 1e 00\n"
2220 "124000 0: b0 1e 7b\n"
2221 "125000 0: b0 1f 32\n"
2222 "126000 0: b0 1f 69\n"
2223 "127000 0: b0 1f 00\n"
2224 "128000 0: b0 1f 20\n"
2225 "129000 0: b0 20 57\n"
2226 "130000 0: b0 20 0e\n"
2227 "131000 0: b0 20 00\n"
2228 "132000 0: b0 20 45\n"
2229 "133000 0: b0 21 7c\n"
2230 "134000 0: b0 21 33\n"
2231 "135000 0: b0 21 00\n"
2232 "136000 0: b0 21 6a\n"
2233 "137000 0: b0 22 21\n"
2234 "138000 0: b0 22 58\n"
2235 "139000 0: b0 22 00\n"
2236 "140000 0: b0 22 0f\n"
2237 "141000 0: b0 23 46\n"
2238 "142000 0: b0 23 7d\n"
2239 "143000 0: b0 23 00\n"
2240 "144000 0: b0 23 34\n"
2241 "145000 0: b0 24 6b\n"
2242 "146000 0: b0 24 22\n"
2243 "147000 0: b0 24 00\n"
2244 "148000 0: b0 24 59\n"
2245 "149000 0: b0 25 10\n"
2246 "150000 0: b0 25 47\n"
2247 "151000 0: b0 25 00\n"
2248 "152000 0: b0 25 7e\n"
2249 "157000 0: b0 27 5a\n"
2250 "158000 0: b0 27 11\n"
2251 "159000 0: b0 27 00\n"
2252 "160000 0: b0 27 48\n"
2253 "161000 0: b0 28 7f\n"
2254 "162000 0: b0 28 36\n"
2255 "163000 0: b0 28 00\n"
2256 "164000 0: b0 28 6d\n"
2257 "165000 0: b0 29 24\n"
2258 "166000 0: b0 29 5b\n"
2259 "167000 0: b0 29 00\n"
2260 "168000 0: b0 29 12\n"
2261 "169000 0: b0 2a 49\n"
2262 "170000 0: b0 2a 00\n"
2263 "172000 0: b0 2a 37\n"
2264 "173000 0: b0 2b 6e\n"
2265 "174000 0: b0 2b 25\n"
2266 "175000 0: b0 2b 00\n"
2267 "176000 0: b0 2b 5c\n"
2268 "177000 0: b0 2c 13\n"
2269 "178000 0: b0 2c 4a\n"
2270 "179000 0: b0 2c 00\n"
2271 "180000 0: b0 2c 01\n"
2272 "181000 0: b0 2d 38\n"
2273 "182000 0: b0 2d 6f\n"
2274 "183000 0: b0 2d 00\n"
2275 "184000 0: b0 2d 26\n"
2276 "185000 0: b0 2e 5d\n"
2277 "186000 0: b0 2e 14\n"
2278 "187000 0: b0 2e 00\n"
2279 "188000 0: b0 2e 4b\n"
2280 "189000 0: b0 2f 02\n"
2281 "190000 0: b0 2f 39\n"
2282 "191000 0: b0 2f 00\n"
2283 "192000 0: b0 2f 70\n"
2284 "193000 0: b0 30 27\n"
2285 "194000 0: b0 30 5e\n"
2286 "195000 0: b0 30 00\n"
2287 "196000 0: b0 30 15\n"
2288 "197000 0: b0 31 4c\n"
2289 "198000 0: b0 31 03\n"
2290 "199000 0: b0 31 00\n"
2291 "200000 0: b0 31 3a\n"
2292 "201000 0: b0 32 71\n"
2293 "202000 0: b0 32 28\n"
2294 "203000 0: b0 32 00\n"
2295 "204000 0: b0 32 5f\n"
2296 "205000 0: b0 33 16\n"
2297 "206000 0: b0 33 4d\n"
2298 "207000 0: b0 33 00\n"
2299 "208000 0: b0 33 04\n"
2300 "209000 0: b0 34 3b\n"
2301 "210000 0: b0 34 72\n"
2302 "211000 0: b0 34 00\n"
2303 "212000 0: b0 34 29\n"
2304 "213000 0: b0 35 60\n"
2305 "214000 0: b0 35 17\n"
2306 "215000 0: b0 35 00\n"
2307 "216000 0: b0 35 4e\n"
2308 "217000 0: b0 36 05\n"
2309 "218000 0: b0 36 3c\n"
2310 "219000 0: b0 36 00\n"
2311 "220000 0: b0 36 73\n"
2312 "221000 0: b0 37 2a\n"
2313 "222000 0: b0 37 61\n"
2314 "223000 0: b0 37 00\n"
2315 "224000 0: b0 37 18\n"
2316 "225000 0: b0 38 4f\n"
2317 "226000 0: b0 38 06\n"
2318 "227000 0: b0 38 00\n"
2319 "228000 0: b0 38 3d\n"
2320 "229000 0: b0 39 74\n"
2321 "230000 0: b0 39 2b\n"
2322 "231000 0: b0 39 00\n"
2323 "232000 0: b0 39 62\n"
2324 "233000 0: b0 3a 19\n"
2325 "234000 0: b0 3a 50\n"
2326 "235000 0: b0 3a 00\n"
2327 "236000 0: b0 3a 07\n"
2328 "237000 0: b0 3b 3e\n"
2329 "238000 0: b0 3b 75\n"
2330 "239000 0: b0 3b 00\n"
2331 "240000 0: b0 3b 2c\n"
2332 "241000 0: b0 3c 63\n"
2333 "242000 0: b0 3c 1a\n"
2334 "243000 0: b0 3c 00\n"
2335 "244000 0: b0 3c 51\n"
2336 "245000 0: b0 3d 08\n"
2337 "246000 0: b0 3d 3f\n"
2338 "247000 0: b0 3d 00\n"
2339 "248000 0: b0 3d 76\n"
2340 "249000 0: b0 3e 2d\n"
2341 "250000 0: b0 3e 64\n"
2342 "251000 0: b0 3e 00\n"
2343 "252000 0: b0 3e 1b\n"
2344 "253000 0: b0 3f 52\n"
2345 "254000 0: b0 3f 09\n"
2346 "255000 0: b0 3f 00\n"
2347 "256000 0: b0 3f 40\n"
2348 "257000 0: b0 40 77\n"
2349 "258000 0: b0 40 2e\n"
2350 "259000 0: b0 40 00\n"
2351 "260000 0: b0 40 65\n"
2352 "261000 0: b0 41 1c\n"
2353 "262000 0: b0 41 53\n"
2354 "263000 0: b0 41 00\n"
2355 "264000 0: b0 41 0a\n"
2356 "265000 0: b0 42 41\n"
2357 "266000 0: b0 42 78\n"
2358 "267000 0: b0 42 00\n"
2359 "268000 0: b0 42 2f\n"
2360 "269000 0: b0 43 66\n"
2361 "270000 0: b0 43 1d\n"
2362 "271000 0: b0 43 00\n"
2363 "272000 0: b0 43 54\n"
2364 "273000 0: b0 44 0b\n"
2365 "274000 0: b0 44 42\n"
2366 "275000 0: b0 44 00\n"
2367 "276000 0: b0 44 79\n"
2368 "277000 0: b0 45 30\n"
2369 "278000 0: b0 45 67\n"
2370 "279000 0: b0 45 00\n"
2371 "280000 0: b0 45 1e\n"
2372 "281000 0: b0 46 55\n"
2373 "282000 0: b0 46 0c\n"
2374 "283000 0: b0 46 00\n"
2375 "284000 0: b0 46 43\n"
2376 "285000 0: b0 47 7a\n"
2377 "286000 0: b0 47 31\n"
2378 "287000 0: b0 47 00\n"
2379 "288000 0: b0 47 68\n"
2380 "289000 0: b0 48 1f\n"
2381 "290000 0: b0 48 56\n"
2382 "291000 0: b0 48 00\n"
2383 "292000 0: b0 48 0d\n"
2384 "293000 0: b0 49 44\n"
2385 "294000 0: b0 49 7b\n"
2386 "295000 0: b0 49 00\n"
2387 "296000 0: b0 49 32\n"
2388 "297000 0: b0 4a 69\n"
2389 "298000 0: b0 4a 20\n"
2390 "299000 0: b0 4a 00\n"
2391 "300000 0: b0 4a 57\n"
2392 "301000 0: b0 4b 0e\n"
2393 "302000 0: b0 4b 45\n"
2394 "303000 0: b0 4b 00\n"
2395 "304000 0: b0 4b 7c\n"
2396 "305000 0: b0 4c 33\n"
2397 "306000 0: b0 4c 6a\n"
2398 "307000 0: b0 4c 00\n"
2399 "308000 0: b0 4c 21\n"
2400 "309000 0: b0 4d 58\n"
2401 "310000 0: b0 4d 0f\n"
2402 "311000 0: b0 4d 00\n"
2403 "312000 0: b0 4d 46\n"
2404 "313000 0: b0 4e 7d\n"
2405 "314000 0: b0 4e 34\n"
2406 "315000 0: b0 4e 00\n"
2407 "316000 0: b0 4e 6b\n"
2408 "317000 0: b0 4f 22\n"
2409 "318000 0: b0 4f 59\n"
2410 "319000 0: b0 4f 00\n"
2411 "320000 0: b0 4f 10\n"
2412 "321000 0: b0 50 47\n"
2413 "322000 0: b0 50 7e\n"
2414 "323000 0: b0 50 00\n"
2415 "324000 0: b0 50 35\n"
2416 "325000 0: b0 51 6c\n"
2417 "326000 0: b0 51 23\n"
2418 "327000 0: b0 51 00\n"
2419 "328000 0: b0 51 5a\n"
2420 "329000 0: b0 52 11\n"
2421 "330000 0: b0 52 48\n"
2422 "331000 0: b0 52 00\n"
2423 "332000 0: b0 52 7f\n"
2424 "333000 0: b0 53 36\n"
2425 "334000 0: b0 53 6d\n"
2426 "335000 0: b0 53 00\n"
2427 "336000 0: b0 53 24\n"
2428 "337000 0: b0 54 5b\n"
2429 "338000 0: b0 54 12\n"
2430 "339000 0: b0 54 00\n"
2431 "340000 0: b0 54 49\n"
2432 "341000 0: b0 55 00\n"
2433 "342000 0: b0 55 37\n"
2434 "343000 0: b0 55 00\n"
2435 "344000 0: b0 55 6e\n"
2436 "345000 0: b0 56 25\n"
2437 "346000 0: b0 56 5c\n"
2438 "347000 0: b0 56 00\n"
2439 "348000 0: b0 56 13\n"
2440 "349000 0: b0 57 4a\n"
2441 "350000 0: b0 57 01\n"
2442 "351000 0: b0 57 00\n"
2443 "352000 0: b0 57 38\n"
2444 "353000 0: b0 58 6f\n"
2445 "354000 0: b0 58 26\n"
2446 "355000 0: b0 58 00\n"
2447 "356000 0: b0 58 5d\n"
2448 "357000 0: b0 59 14\n"
2449 "358000 0: b0 59 4b\n"
2450 "359000 0: b0 59 00\n"
2451 "360000 0: b0 59 02\n"
2452 "361000 0: b0 5a 39\n"
2453 "362000 0: b0 5a 70\n"
2454 "363000 0: b0 5a 00\n"
2455 "364000 0: b0 5a 27\n"
2456 "365000 0: b0 5b 5e\n"
2457 "366000 0: b0 5b 15\n"
2458 "367000 0: b0 5b 00\n"
2459 "368000 0: b0 5b 4c\n"
2460 "369000 0: b0 5c 03\n"
2461 "370000 0: b0 5c 3a\n"
2462 "371000 0: b0 5c 00\n"
2463 "372000 0: b0 5c 71\n"
2464 "373000 0: b0 5d 28\n"
2465 "374000 0: b0 5d 5f\n"
2466 "375000 0: b0 5d 00\n"
2467 "376000 0: b0 5d 16\n"
2468 "377000 0: b0 5e 4d\n"
2469 "378000 0: b0 5e 04\n"
2470 "379000 0: b0 5e 00\n"
2471 "380000 0: b0 5e 3b\n"
2472 "381000 0: b0 5f 72\n"
2473 "382000 0: b0 5f 29\n"
2474 "383000 0: b0 5f 00\n"
2475 "384000 0: b0 5f 60\n"
2476 "393000 0: b0 62 61\n"
2477 "394000 0: b0 62 18\n"
2478 "395000 0: b0 62 00\n"
2479 "396000 0: b0 62 4f\n"
2480 "397000 0: b0 63 06\n"
2481 "398000 0: b0 63 3d\n"
2482 "399000 0: b0 63 00\n"
2483 "400000 0: b0 63 74\n"
2484 "401000 0: b0 64 2b\n"
2485 "402000 0: b0 64 62\n"
2486 "403000 0: b0 64 00\n"
2487 "404000 0: b0 64 19\n"
2488 "405000 0: b0 65 50\n"
2489 "406000 0: b0 65 07\n"
2490 "407000 0: b0 65 00\n"
2491 "408000 0: b0 65 3e\n"
2492 "409000 0: b0 66 75\n"
2493 "410000 0: b0 66 2c\n"
2494 "411000 0: b0 66 00\n"
2495 "412000 0: b0 66 63\n"
2496 "413000 0: b0 67 1a\n"
2497 "414000 0: b0 67 51\n"
2498 "415000 0: b0 67 00\n"
2499 "416000 0: b0 67 08\n"
2500 "417000 0: b0 68 3f\n"
2501 "418000 0: b0 68 76\n"
2502 "419000 0: b0 68 00\n"
2503 "420000 0: b0 68 2d\n"
2504 "421000 0: b0 69 64\n"
2505 "422000 0: b0 69 1b\n"
2506 "423000 0: b0 69 00\n"
2507 "424000 0: b0 69 52\n"
2508 "425000 0: b0 6a 09\n"
2509 "426000 0: b0 6a 40\n"
2510 "427000 0: b0 6a 00\n"
2511 "428000 0: b0 6a 77\n"
2512 "429000 0: b0 6b 2e\n"
2513 "430000 0: b0 6b 65\n"
2514 "431000 0: b0 6b 00\n"
2515 "432000 0: b0 6b 1c\n"
2516 "433000 0: b0 6c 53\n"
2517 "434000 0: b0 6c 0a\n"
2518 "435000 0: b0 6c 00\n"
2519 "436000 0: b0 6c 41\n"
2520 "437000 0: b0 6d 78\n"
2521 "438000 0: b0 6d 2f\n"
2522 "439000 0: b0 6d 00\n"
2523 "440000 0: b0 6d 66\n"
2524 "441000 0: b0 6e 1d\n"
2525 "442000 0: b0 6e 54\n"
2526 "443000 0: b0 6e 00\n"
2527 "444000 0: b0 6e 0b\n"
2528 "445000 0: b0 6f 42\n"
2529 "446000 0: b0 6f 79\n"
2530 "447000 0: b0 6f 00\n"
2531 "448000 0: b0 6f 30\n"
2532 "449000 0: b0 70 67\n"
2533 "450000 0: b0 70 1e\n"
2534 "451000 0: b0 70 00\n"
2535 "452000 0: b0 70 55\n"
2536 "453000 0: b0 71 0c\n"
2537 "454000 0: b0 71 43\n"
2538 "455000 0: b0 71 00\n"
2539 "456000 0: b0 71 7a\n"
2540 "457000 0: b0 72 31\n"
2541 "458000 0: b0 72 68\n"
2542 "459000 0: b0 72 00\n"
2543 "460000 0: b0 72 1f\n"
2544 "461000 0: b0 73 56\n"
2545 "462000 0: b0 73 0d\n"
2546 "463000 0: b0 73 00\n"
2547 "464000 0: b0 73 44\n"
2548 "465000 0: b0 74 7b\n"
2549 "466000 0: b0 74 32\n"
2550 "467000 0: b0 74 00\n"
2551 "468000 0: b0 74 69\n"
2552 "469000 0: b0 75 20\n"
2553 "470000 0: b0 75 57\n"
2554 "471000 0: b0 75 00\n"
2555 "472000 0: b0 75 0e\n"
2556 "473000 0: b0 76 45\n"
2557 "474000 0: b0 76 7c\n"
2558 "475000 0: b0 76 00\n"
2559 "476000 0: b0 76 33\n"
2560 "477000 0: b0 77 6a\n"
2561 "478000 0: b0 77 21\n"
2562 "479000 0: b0 77 00\n"
2563 "480000 0: b0 77 58\n"
2564 "481000 0: b0 40 00\n"
2565 "481000 0: b0 42 00\n"
2566 "481000 0: b0 44 00\n"
2567 "481000 0: b0 45 00\n"
2568 "481000 0: 80 3c 7f\n"
2569 "482000 1: b1 40 65\n"
2570 "482000 1: b1 42 2f\n"
2571 "482000 1: b1 44 79\n"
2572 "482000 1: b1 45 1e\n"
2573 "482000 1: b1 00 25\n"
2574 "482000 1: b1 20 45\n"
2575 "482000 1: 91 40 39\n"
2576 "482000 1: b1 01 4a\n"
2577 "482000 1: b1 02 6f\n"
2578 "482000 1: b1 03 14\n"
2579 "482000 1: b1 04 39\n"
2580 "482000 1: b1 05 5e\n"
2581 "482000 1: b1 07 28\n"
2582 "482000 1: b1 08 4d\n"
2583 "482000 1: b1 09 72\n"
2584 "482000 1: b1 0a 17\n"
2585 "482000 1: b1 0b 3c\n"
2586 "482000 1: b1 0c 61\n"
2587 "482000 1: b1 0d 06\n"
2588 "482000 1: b1 0e 2b\n"
2589 "482000 1: b1 0f 50\n"
2590 "482000 1: b1 10 75\n"
2591 "482000 1: b1 11 1a\n"
2592 "482000 1: b1 12 3f\n"
2593 "482000 1: b1 13 64\n"
2594 "482000 1: b1 14 09\n"
2595 "482000 1: b1 15 2e\n"
2596 "482000 1: b1 16 53\n"
2597 "482000 1: b1 17 78\n"
2598 "482000 1: b1 18 1d\n"
2599 "482000 1: b1 19 42\n"
2600 "482000 1: b1 1a 67\n"
2601 "482000 1: b1 1b 0c\n"
2602 "482000 1: b1 1c 31\n"
2603 "482000 1: b1 1d 56\n"
2604 "482000 1: b1 1e 7b\n"
2605 "482000 1: b1 1f 20\n"
2606 "482000 1: b1 21 6a\n"
2607 "482000 1: b1 22 0f\n"
2608 "482000 1: b1 23 34\n"
2609 "482000 1: b1 24 59\n"
2610 "482000 1: b1 25 7e\n"
2611 "482000 1: b1 27 48\n"
2612 "482000 1: b1 28 6d\n"
2613 "482000 1: b1 29 12\n"
2614 "482000 1: b1 2a 37\n"
2615 "482000 1: b1 2b 5c\n"
2616 "482000 1: b1 2c 01\n"
2617 "482000 1: b1 2d 26\n"
2618 "482000 1: b1 2e 4b\n"
2619 "482000 1: b1 2f 70\n"
2620 "482000 1: b1 30 15\n"
2621 "482000 1: b1 31 3a\n"
2622 "482000 1: b1 32 5f\n"
2623 "482000 1: b1 33 04\n"
2624 "482000 1: b1 34 29\n"
2625 "482000 1: b1 35 4e\n"
2626 "482000 1: b1 36 73\n"
2627 "482000 1: b1 37 18\n"
2628 "482000 1: b1 38 3d\n"
2629 "482000 1: b1 39 62\n"
2630 "482000 1: b1 3a 07\n"
2631 "482000 1: b1 3b 2c\n"
2632 "482000 1: b1 3c 51\n"
2633 "482000 1: b1 3d 76\n"
2634 "482000 1: b1 3e 1b\n"
2635 "482000 1: b1 3f 40\n"
2636 "482000 1: b1 41 0a\n"
2637 "482000 1: b1 43 54\n"
2638 "482000 1: b1 46 43\n"
2639 "482000 1: b1 47 68\n"
2640 "482000 1: b1 48 0d\n"
2641 "482000 1: b1 49 32\n"
2642 "482000 1: b1 4a 57\n"
2643 "482000 1: b1 4b 7c\n"
2644 "482000 1: b1 4c 21\n"
2645 "482000 1: b1 4d 46\n"
2646 "482000 1: b1 4e 6b\n"
2647 "482000 1: b1 4f 10\n"
2648 "482000 1: b1 50 35\n"
2649 "482000 1: b1 51 5a\n"
2650 "482000 1: b1 52 7f\n"
2651 "482000 1: b1 53 24\n"
2652 "482000 1: b1 54 49\n"
2653 "482000 1: b1 55 6e\n"
2654 "482000 1: b1 56 13\n"
2655 "482000 1: b1 57 38\n"
2656 "482000 1: b1 58 5d\n"
2657 "482000 1: b1 59 02\n"
2658 "482000 1: b1 5a 27\n"
2659 "482000 1: b1 5b 4c\n"
2660 "482000 1: b1 5c 71\n"
2661 "482000 1: b1 5d 16\n"
2662 "482000 1: b1 5e 3b\n"
2663 "482000 1: b1 5f 60\n"
2664 "482000 1: b1 62 4f\n"
2665 "482000 1: b1 63 74\n"
2666 "482000 1: b1 64 19\n"
2667 "482000 1: b1 65 3e\n"
2668 "482000 1: b1 66 63\n"
2669 "482000 1: b1 67 08\n"
2670 "482000 1: b1 68 2d\n"
2671 "482000 1: b1 69 52\n"
2672 "482000 1: b1 6a 77\n"
2673 "482000 1: b1 6b 1c\n"
2674 "482000 1: b1 6c 41\n"
2675 "482000 1: b1 6d 66\n"
2676 "482000 1: b1 6e 0b\n"
2677 "482000 1: b1 6f 30\n"
2678 "482000 1: b1 70 55\n"
2679 "482000 1: b1 71 7a\n"
2680 "482000 1: b1 72 1f\n"
2681 "482000 1: b1 73 44\n"
2682 "482000 1: b1 74 69\n"
2683 "482000 1: b1 75 0e\n"
2684 "482000 1: b1 76 33\n"
2685 "482000 1: b1 77 58\n"
2686 "483000 1: b1 40 00\n"
2687 "483000 1: b1 42 00\n"
2688 "483000 1: b1 44 00\n"
2689 "483000 1: b1 45 00\n"
2690 "483000 1: 81 40 39\n"
2691 "484000 2: b2 40 65\n"
2692 "484000 2: b2 42 2f\n"
2693 "484000 2: b2 44 79\n"
2694 "484000 2: b2 45 1e\n"
2695 "484000 2: b2 00 25\n"
2696 "484000 2: b2 20 45\n"
2697 "484000 2: 92 40 3b\n"
2698 "484000 2: b2 01 4a\n"
2699 "484000 2: b2 02 6f\n"
2700 "484000 2: b2 03 14\n"
2701 "484000 2: b2 04 39\n"
2702 "484000 2: b2 05 5e\n"
2703 "484000 2: b2 07 28\n"
2704 "484000 2: b2 08 4d\n"
2705 "484000 2: b2 09 72\n"
2706 "484000 2: b2 0a 17\n"
2707 "484000 2: b2 0b 3c\n"
2708 "484000 2: b2 0c 61\n"
2709 "484000 2: b2 0d 06\n"
2710 "484000 2: b2 0e 2b\n"
2711 "484000 2: b2 0f 50\n"
2712 "484000 2: b2 10 75\n"
2713 "484000 2: b2 11 1a\n"
2714 "484000 2: b2 12 3f\n"
2715 "484000 2: b2 13 64\n"
2716 "484000 2: b2 14 09\n"
2717 "484000 2: b2 15 2e\n"
2718 "484000 2: b2 16 53\n"
2719 "484000 2: b2 17 78\n"
2720 "484000 2: b2 18 1d\n"
2721 "484000 2: b2 19 42\n"
2722 "484000 2: b2 1a 67\n"
2723 "484000 2: b2 1b 0c\n"
2724 "484000 2: b2 1c 31\n"
2725 "484000 2: b2 1d 56\n"
2726 "484000 2: b2 1e 7b\n"
2727 "484000 2: b2 1f 20\n"
2728 "484000 2: b2 21 6a\n"
2729 "484000 2: b2 22 0f\n"
2730 "484000 2: b2 23 34\n"
2731 "484000 2: b2 24 59\n"
2732 "484000 2: b2 25 7e\n"
2733 "484000 2: b2 27 48\n"
2734 "484000 2: b2 28 6d\n"
2735 "484000 2: b2 29 12\n"
2736 "484000 2: b2 2a 37\n"
2737 "484000 2: b2 2b 5c\n"
2738 "484000 2: b2 2c 01\n"
2739 "484000 2: b2 2d 26\n"
2740 "484000 2: b2 2e 4b\n"
2741 "484000 2: b2 2f 70\n"
2742 "484000 2: b2 30 15\n"
2743 "484000 2: b2 31 3a\n"
2744 "484000 2: b2 32 5f\n"
2745 "484000 2: b2 33 04\n"
2746 "484000 2: b2 34 29\n"
2747 "484000 2: b2 35 4e\n"
2748 "484000 2: b2 36 73\n"
2749 "484000 2: b2 37 18\n"
2750 "484000 2: b2 38 3d\n"
2751 "484000 2: b2 39 62\n"
2752 "484000 2: b2 3a 07\n"
2753 "484000 2: b2 3b 2c\n"
2754 "484000 2: b2 3c 51\n"
2755 "484000 2: b2 3d 76\n"
2756 "484000 2: b2 3e 1b\n"
2757 "484000 2: b2 3f 40\n"
2758 "484000 2: b2 41 0a\n"
2759 "484000 2: b2 43 54\n"
2760 "484000 2: b2 46 43\n"
2761 "484000 2: b2 47 68\n"
2762 "484000 2: b2 48 0d\n"
2763 "484000 2: b2 49 32\n"
2764 "484000 2: b2 4a 57\n"
2765 "484000 2: b2 4b 7c\n"
2766 "484000 2: b2 4c 21\n"
2767 "484000 2: b2 4d 46\n"
2768 "484000 2: b2 4e 6b\n"
2769 "484000 2: b2 4f 10\n"
2770 "484000 2: b2 50 35\n"
2771 "484000 2: b2 51 5a\n"
2772 "484000 2: b2 52 7f\n"
2773 "484000 2: b2 53 24\n"
2774 "484000 2: b2 54 49\n"
2775 "484000 2: b2 55 6e\n"
2776 "484000 2: b2 56 13\n"
2777 "484000 2: b2 57 38\n"
2778 "484000 2: b2 58 5d\n"
2779 "484000 2: b2 59 02\n"
2780 "484000 2: b2 5a 27\n"
2781 "484000 2: b2 5b 4c\n"
2782 "484000 2: b2 5c 71\n"
2783 "484000 2: b2 5d 16\n"
2784 "484000 2: b2 5e 3b\n"
2785 "484000 2: b2 5f 60\n"
2786 "484000 2: b2 62 4f\n"
2787 "484000 2: b2 63 74\n"
2788 "484000 2: b2 64 19\n"
2789 "484000 2: b2 65 3e\n"
2790 "484000 2: b2 66 63\n"
2791 "484000 2: b2 67 08\n"
2792 "484000 2: b2 68 2d\n"
2793 "484000 2: b2 69 52\n"
2794 "484000 2: b2 6a 77\n"
2795 "484000 2: b2 6b 1c\n"
2796 "484000 2: b2 6c 41\n"
2797 "484000 2: b2 6d 66\n"
2798 "484000 2: b2 6e 0b\n"
2799 "484000 2: b2 6f 30\n"
2800 "484000 2: b2 70 55\n"
2801 "484000 2: b2 71 7a\n"
2802 "484000 2: b2 72 1f\n"
2803 "484000 2: b2 73 44\n"
2804 "484000 2: b2 74 69\n"
2805 "484000 2: b2 75 0e\n"
2806 "484000 2: b2 76 33\n"
2807 "484000 2: b2 77 58\n"
2808 "485000 2: b2 40 00\n"
2809 "485000 2: b2 42 00\n"
2810 "485000 2: b2 44 00\n"
2811 "485000 2: b2 45 00\n"
2812 "485000 2: 82 40 3b\n"
2813 "486000 3: b3 40 65\n"
2814 "486000 3: b3 42 2f\n"
2815 "486000 3: b3 44 79\n"
2816 "486000 3: b3 45 1e\n"
2817 "486000 3: b3 00 25\n"
2818 "486000 3: b3 20 45\n"
2819 "486000 3: 93 40 3d\n"
2820 "486000 3: b3 01 4a\n"
2821 "486000 3: b3 02 6f\n"
2822 "486000 3: b3 03 14\n"
2823 "486000 3: b3 04 39\n"
2824 "486000 3: b3 05 5e\n"
2825 "486000 3: b3 07 28\n"
2826 "486000 3: b3 08 4d\n"
2827 "486000 3: b3 09 72\n"
2828 "486000 3: b3 0a 17\n"
2829 "486000 3: b3 0b 3c\n"
2830 "486000 3: b3 0c 61\n"
2831 "486000 3: b3 0d 06\n"
2832 "486000 3: b3 0e 2b\n"
2833 "486000 3: b3 0f 50\n"
2834 "486000 3: b3 10 75\n"
2835 "486000 3: b3 11 1a\n"
2836 "486000 3: b3 12 3f\n"
2837 "486000 3: b3 13 64\n"
2838 "486000 3: b3 14 09\n"
2839 "486000 3: b3 15 2e\n"
2840 "486000 3: b3 16 53\n"
2841 "486000 3: b3 17 78\n"
2842 "486000 3: b3 18 1d\n"
2843 "486000 3: b3 19 42\n"
2844 "486000 3: b3 1a 67\n"
2845 "486000 3: b3 1b 0c\n"
2846 "486000 3: b3 1c 31\n"
2847 "486000 3: b3 1d 56\n"
2848 "486000 3: b3 1e 7b\n"
2849 "486000 3: b3 1f 20\n"
2850 "486000 3: b3 21 6a\n"
2851 "486000 3: b3 22 0f\n"
2852 "486000 3: b3 23 34\n"
2853 "486000 3: b3 24 59\n"
2854 "486000 3: b3 25 7e\n"
2855 "486000 3: b3 27 48\n"
2856 "486000 3: b3 28 6d\n"
2857 "486000 3: b3 29 12\n"
2858 "486000 3: b3 2a 37\n"
2859 "486000 3: b3 2b 5c\n"
2860 "486000 3: b3 2c 01\n"
2861 "486000 3: b3 2d 26\n"
2862 "486000 3: b3 2e 4b\n"
2863 "486000 3: b3 2f 70\n"
2864 "486000 3: b3 30 15\n"
2865 "486000 3: b3 31 3a\n"
2866 "486000 3: b3 32 5f\n"
2867 "486000 3: b3 33 04\n"
2868 "486000 3: b3 34 29\n"
2869 "486000 3: b3 35 4e\n"
2870 "486000 3: b3 36 73\n"
2871 "486000 3: b3 37 18\n"
2872 "486000 3: b3 38 3d\n"
2873 "486000 3: b3 39 62\n"
2874 "486000 3: b3 3a 07\n"
2875 "486000 3: b3 3b 2c\n"
2876 "486000 3: b3 3c 51\n"
2877 "486000 3: b3 3d 76\n"
2878 "486000 3: b3 3e 1b\n"
2879 "486000 3: b3 3f 40\n"
2880 "486000 3: b3 41 0a\n"
2881 "486000 3: b3 43 54\n"
2882 "486000 3: b3 46 43\n"
2883 "486000 3: b3 47 68\n"
2884 "486000 3: b3 48 0d\n"
2885 "486000 3: b3 49 32\n"
2886 "486000 3: b3 4a 57\n"
2887 "486000 3: b3 4b 7c\n"
2888 "486000 3: b3 4c 21\n"
2889 "486000 3: b3 4d 46\n"
2890 "486000 3: b3 4e 6b\n"
2891 "486000 3: b3 4f 10\n"
2892 "486000 3: b3 50 35\n"
2893 "486000 3: b3 51 5a\n"
2894 "486000 3: b3 52 7f\n"
2895 "486000 3: b3 53 24\n"
2896 "486000 3: b3 54 49\n"
2897 "486000 3: b3 55 6e\n"
2898 "486000 3: b3 56 13\n"
2899 "486000 3: b3 57 38\n"
2900 "486000 3: b3 58 5d\n"
2901 "486000 3: b3 59 02\n"
2902 "486000 3: b3 5a 27\n"
2903 "486000 3: b3 5b 4c\n"
2904 "486000 3: b3 5c 71\n"
2905 "486000 3: b3 5d 16\n"
2906 "486000 3: b3 5e 3b\n"
2907 "486000 3: b3 5f 60\n"
2908 "486000 3: b3 62 4f\n"
2909 "486000 3: b3 63 74\n"
2910 "486000 3: b3 64 19\n"
2911 "486000 3: b3 65 3e\n"
2912 "486000 3: b3 66 63\n"
2913 "486000 3: b3 67 08\n"
2914 "486000 3: b3 68 2d\n"
2915 "486000 3: b3 69 52\n"
2916 "486000 3: b3 6a 77\n"
2917 "486000 3: b3 6b 1c\n"
2918 "486000 3: b3 6c 41\n"
2919 "486000 3: b3 6d 66\n"
2920 "486000 3: b3 6e 0b\n"
2921 "486000 3: b3 6f 30\n"
2922 "486000 3: b3 70 55\n"
2923 "486000 3: b3 71 7a\n"
2924 "486000 3: b3 72 1f\n"
2925 "486000 3: b3 73 44\n"
2926 "486000 3: b3 74 69\n"
2927 "486000 3: b3 75 0e\n"
2928 "486000 3: b3 76 33\n"
2929 "486000 3: b3 77 58\n"
2930 "487000 3: b3 40 00\n"
2931 "487000 3: b3 42 00\n"
2932 "487000 3: b3 44 00\n"
2933 "487000 3: b3 45 00\n"
2934 "487000 3: 83 40 3d\n"
2935 "488000 4: b4 40 65\n"
2936 "488000 4: b4 42 2f\n"
2937 "488000 4: b4 44 79\n"
2938 "488000 4: b4 45 1e\n"
2939 "488000 4: b4 00 25\n"
2940 "488000 4: b4 20 45\n"
2941 "488000 4: 94 40 3f\n"
2942 "488000 4: b4 01 4a\n"
2943 "488000 4: b4 02 6f\n"
2944 "488000 4: b4 03 14\n"
2945 "488000 4: b4 04 39\n"
2946 "488000 4: b4 05 5e\n"
2947 "488000 4: b4 07 28\n"
2948 "488000 4: b4 08 4d\n"
2949 "488000 4: b4 09 72\n"
2950 "488000 4: b4 0a 17\n"
2951 "488000 4: b4 0b 3c\n"
2952 "488000 4: b4 0c 61\n"
2953 "488000 4: b4 0d 06\n"
2954 "488000 4: b4 0e 2b\n"
2955 "488000 4: b4 0f 50\n"
2956 "488000 4: b4 10 75\n"
2957 "488000 4: b4 11 1a\n"
2958 "488000 4: b4 12 3f\n"
2959 "488000 4: b4 13 64\n"
2960 "488000 4: b4 14 09\n"
2961 "488000 4: b4 15 2e\n"
2962 "488000 4: b4 16 53\n"
2963 "488000 4: b4 17 78\n"
2964 "488000 4: b4 18 1d\n"
2965 "488000 4: b4 19 42\n"
2966 "488000 4: b4 1a 67\n"
2967 "488000 4: b4 1b 0c\n"
2968 "488000 4: b4 1c 31\n"
2969 "488000 4: b4 1d 56\n"
2970 "488000 4: b4 1e 7b\n"
2971 "488000 4: b4 1f 20\n"
2972 "488000 4: b4 21 6a\n"
2973 "488000 4: b4 22 0f\n"
2974 "488000 4: b4 23 34\n"
2975 "488000 4: b4 24 59\n"
2976 "488000 4: b4 25 7e\n"
2977 "488000 4: b4 27 48\n"
2978 "488000 4: b4 28 6d\n"
2979 "488000 4: b4 29 12\n"
2980 "488000 4: b4 2a 37\n"
2981 "488000 4: b4 2b 5c\n"
2982 "488000 4: b4 2c 01\n"
2983 "488000 4: b4 2d 26\n"
2984 "488000 4: b4 2e 4b\n"
2985 "488000 4: b4 2f 70\n"
2986 "488000 4: b4 30 15\n"
2987 "488000 4: b4 31 3a\n"
2988 "488000 4: b4 32 5f\n"
2989 "488000 4: b4 33 04\n"
2990 "488000 4: b4 34 29\n"
2991 "488000 4: b4 35 4e\n"
2992 "488000 4: b4 36 73\n"
2993 "488000 4: b4 37 18\n"
2994 "488000 4: b4 38 3d\n"
2995 "488000 4: b4 39 62\n"
2996 "488000 4: b4 3a 07\n"
2997 "488000 4: b4 3b 2c\n"
2998 "488000 4: b4 3c 51\n"
2999 "488000 4: b4 3d 76\n"
3000 "488000 4: b4 3e 1b\n"
3001 "488000 4: b4 3f 40\n"
3002 "488000 4: b4 41 0a\n"
3003 "488000 4: b4 43 54\n"
3004 "488000 4: b4 46 43\n"
3005 "488000 4: b4 47 68\n"
3006 "488000 4: b4 48 0d\n"
3007 "488000 4: b4 49 32\n"
3008 "488000 4: b4 4a 57\n"
3009 "488000 4: b4 4b 7c\n"
3010 "488000 4: b4 4c 21\n"
3011 "488000 4: b4 4d 46\n"
3012 "488000 4: b4 4e 6b\n"
3013 "488000 4: b4 4f 10\n"
3014 "488000 4: b4 50 35\n"
3015 "488000 4: b4 51 5a\n"
3016 "488000 4: b4 52 7f\n"
3017 "488000 4: b4 53 24\n"
3018 "488000 4: b4 54 49\n"
3019 "488000 4: b4 55 6e\n"
3020 "488000 4: b4 56 13\n"
3021 "488000 4: b4 57 38\n"
3022 "488000 4: b4 58 5d\n"
3023 "488000 4: b4 59 02\n"
3024 "488000 4: b4 5a 27\n"
3025 "488000 4: b4 5b 4c\n"
3026 "488000 4: b4 5c 71\n"
3027 "488000 4: b4 5d 16\n"
3028 "488000 4: b4 5e 3b\n"
3029 "488000 4: b4 5f 60\n"
3030 "488000 4: b4 62 4f\n"
3031 "488000 4: b4 63 74\n"
3032 "488000 4: b4 64 19\n"
3033 "488000 4: b4 65 3e\n"
3034 "488000 4: b4 66 63\n"
3035 "488000 4: b4 67 08\n"
3036 "488000 4: b4 68 2d\n"
3037 "488000 4: b4 69 52\n"
3038 "488000 4: b4 6a 77\n"
3039 "488000 4: b4 6b 1c\n"
3040 "488000 4: b4 6c 41\n"
3041 "488000 4: b4 6d 66\n"
3042 "488000 4: b4 6e 0b\n"
3043 "488000 4: b4 6f 30\n"
3044 "488000 4: b4 70 55\n"
3045 "488000 4: b4 71 7a\n"
3046 "488000 4: b4 72 1f\n"
3047 "488000 4: b4 73 44\n"
3048 "488000 4: b4 74 69\n"
3049 "488000 4: b4 75 0e\n"
3050 "488000 4: b4 76 33\n"
3051 "488000 4: b4 77 58\n"
3052 "489000 4: b4 40 00\n"
3053 "489000 4: b4 42 00\n"
3054 "489000 4: b4 44 00\n"
3055 "489000 4: b4 45 00\n"
3056 "489000 4: 84 40 3f\n"
3057 "490000 5: b5 40 00\n"
3058 "490000 5: b5 42 00\n"
3059 "490000 5: b5 44 00\n"
3060 "490000 5: b5 45 00\n"
3061 "490000 5: b5 00 25\n"
3062 "490000 5: b5 20 45\n"
3063 "490000 5: 95 40 3f\n"
3064 "490000 5: b5 07 28\n"
3065 "490000 5: b5 0a 17\n"
3066 "490000 5: b5 46 43\n"
3067 "490000 5: b5 47 68\n"
3068 "490000 5: b5 48 0d\n"
3069 "490000 5: b5 49 32\n"
3070 "490000 5: b5 4a 57\n"
3071 "490000 5: b5 4b 7c\n"
3072 "490000 5: b5 4c 21\n"
3073 "490000 5: b5 4d 46\n"
3074 "490000 5: b5 4e 6b\n"
3075 "490000 5: b5 4f 10\n"
3076 "490000 5: b5 5b 4c\n"
3077 "490000 5: b5 5c 71\n"
3078 "490000 5: b5 5d 16\n"
3079 "490000 5: b5 5e 3b\n"
3080 "490000 5: b5 5f 60\n"
3081 "490000 5: b5 01 00\n"
3082 "490000 5: b5 02 00\n"
3083 "490000 5: b5 03 00\n"
3084 "490000 5: b5 04 00\n"
3085 "490000 5: b5 05 00\n"
3086 "490000 5: b5 08 40\n"
3087 "490000 5: b5 09 00\n"
3088 "490000 5: b5 0b 7f\n"
3089 "490000 5: b5 0c 00\n"
3090 "490000 5: b5 0d 00\n"
3091 "490000 5: b5 0e 00\n"
3092 "490000 5: b5 0f 00\n"
3093 "490000 5: b5 10 00\n"
3094 "490000 5: b5 11 00\n"
3095 "490000 5: b5 12 00\n"
3096 "490000 5: b5 13 00\n"
3097 "490000 5: b5 14 00\n"
3098 "490000 5: b5 15 00\n"
3099 "490000 5: b5 16 00\n"
3100 "490000 5: b5 17 00\n"
3101 "490000 5: b5 18 00\n"
3102 "490000 5: b5 19 00\n"
3103 "490000 5: b5 1a 00\n"
3104 "490000 5: b5 1b 00\n"
3105 "490000 5: b5 1c 00\n"
3106 "490000 5: b5 1d 00\n"
3107 "490000 5: b5 1e 00\n"
3108 "490000 5: b5 1f 00\n"
3109 "490000 5: b5 21 00\n"
3110 "490000 5: b5 22 00\n"
3111 "490000 5: b5 23 00\n"
3112 "490000 5: b5 24 00\n"
3113 "490000 5: b5 25 00\n"
3114 "490000 5: b5 27 00\n"
3115 "490000 5: b5 28 00\n"
3116 "490000 5: b5 29 00\n"
3117 "490000 5: b5 2a 00\n"
3118 "490000 5: b5 2b 7f\n"
3119 "490000 5: b5 2c 00\n"
3120 "490000 5: b5 2d 00\n"
3121 "490000 5: b5 2e 00\n"
3122 "490000 5: b5 2f 00\n"
3123 "490000 5: b5 30 00\n"
3124 "490000 5: b5 31 00\n"
3125 "490000 5: b5 32 00\n"
3126 "490000 5: b5 33 00\n"
3127 "490000 5: b5 34 00\n"
3128 "490000 5: b5 35 00\n"
3129 "490000 5: b5 36 00\n"
3130 "490000 5: b5 37 00\n"
3131 "490000 5: b5 38 00\n"
3132 "490000 5: b5 39 00\n"
3133 "490000 5: b5 3a 00\n"
3134 "490000 5: b5 3b 00\n"
3135 "490000 5: b5 3c 00\n"
3136 "490000 5: b5 3d 00\n"
3137 "490000 5: b5 3e 00\n"
3138 "490000 5: b5 3f 00\n"
3139 "490000 5: b5 41 00\n"
3140 "490000 5: b5 43 00\n"
3141 "490000 5: b5 50 00\n"
3142 "490000 5: b5 51 00\n"
3143 "490000 5: b5 52 00\n"
3144 "490000 5: b5 53 00\n"
3145 "490000 5: b5 54 00\n"
3146 "490000 5: b5 55 00\n"
3147 "490000 5: b5 56 00\n"
3148 "490000 5: b5 57 00\n"
3149 "490000 5: b5 58 00\n"
3150 "490000 5: b5 59 00\n"
3151 "490000 5: b5 5a 00\n"
3152 "490000 5: b5 62 7f\n"
3153 "490000 5: b5 63 7f\n"
3154 "490000 5: b5 64 7f\n"
3155 "490000 5: b5 65 7f\n"
3156 "490000 5: b5 66 00\n"
3157 "490000 5: b5 67 00\n"
3158 "490000 5: b5 68 00\n"
3159 "490000 5: b5 69 00\n"
3160 "490000 5: b5 6a 00\n"
3161 "490000 5: b5 6b 00\n"
3162 "490000 5: b5 6c 00\n"
3163 "490000 5: b5 6d 00\n"
3164 "490000 5: b5 6e 00\n"
3165 "490000 5: b5 6f 00\n"
3166 "490000 5: b5 70 00\n"
3167 "490000 5: b5 71 00\n"
3168 "490000 5: b5 72 00\n"
3169 "490000 5: b5 73 00\n"
3170 "490000 5: b5 74 00\n"
3171 "490000 5: b5 75 00\n"
3172 "490000 5: b5 76 00\n"
3173 "490000 5: b5 77 00\n"
3174 "491000 5: 85 40 3f\n"
3175 "492000 6: b6 40 00\n"
3176 "492000 6: b6 42 00\n"
3177 "492000 6: b6 44 00\n"
3178 "492000 6: b6 45 00\n"
3179 "492000 6: b6 00 25\n"
3180 "492000 6: b6 20 45\n"
3181 "492000 6: 96 40 3f\n"
3182 "492000 6: b6 07 28\n"
3183 "492000 6: b6 0a 17\n"
3184 "492000 6: b6 46 43\n"
3185 "492000 6: b6 47 68\n"
3186 "492000 6: b6 48 0d\n"
3187 "492000 6: b6 49 32\n"
3188 "492000 6: b6 4a 57\n"
3189 "492000 6: b6 4b 7c\n"
3190 "492000 6: b6 4c 21\n"
3191 "492000 6: b6 4d 46\n"
3192 "492000 6: b6 4e 6b\n"
3193 "492000 6: b6 4f 10\n"
3194 "492000 6: b6 5b 4c\n"
3195 "492000 6: b6 5c 71\n"
3196 "492000 6: b6 5d 16\n"
3197 "492000 6: b6 5e 3b\n"
3198 "492000 6: b6 5f 60\n"
3199 "492000 6: b6 01 00\n"
3200 "492000 6: b6 02 00\n"
3201 "492000 6: b6 03 00\n"
3202 "492000 6: b6 04 00\n"
3203 "492000 6: b6 05 00\n"
3204 "492000 6: b6 08 40\n"
3205 "492000 6: b6 09 00\n"
3206 "492000 6: b6 0b 7f\n"
3207 "492000 6: b6 0c 00\n"
3208 "492000 6: b6 0d 00\n"
3209 "492000 6: b6 0e 00\n"
3210 "492000 6: b6 0f 00\n"
3211 "492000 6: b6 10 00\n"
3212 "492000 6: b6 11 00\n"
3213 "492000 6: b6 12 00\n"
3214 "492000 6: b6 13 00\n"
3215 "492000 6: b6 14 00\n"
3216 "492000 6: b6 15 00\n"
3217 "492000 6: b6 16 00\n"
3218 "492000 6: b6 17 00\n"
3219 "492000 6: b6 18 00\n"
3220 "492000 6: b6 19 00\n"
3221 "492000 6: b6 1a 00\n"
3222 "492000 6: b6 1b 00\n"
3223 "492000 6: b6 1c 00\n"
3224 "492000 6: b6 1d 00\n"
3225 "492000 6: b6 1e 00\n"
3226 "492000 6: b6 1f 00\n"
3227 "492000 6: b6 21 00\n"
3228 "492000 6: b6 22 00\n"
3229 "492000 6: b6 23 00\n"
3230 "492000 6: b6 24 00\n"
3231 "492000 6: b6 25 00\n"
3232 "492000 6: b6 27 00\n"
3233 "492000 6: b6 28 00\n"
3234 "492000 6: b6 29 00\n"
3235 "492000 6: b6 2a 00\n"
3236 "492000 6: b6 2b 7f\n"
3237 "492000 6: b6 2c 00\n"
3238 "492000 6: b6 2d 00\n"
3239 "492000 6: b6 2e 00\n"
3240 "492000 6: b6 2f 00\n"
3241 "492000 6: b6 30 00\n"
3242 "492000 6: b6 31 00\n"
3243 "492000 6: b6 32 00\n"
3244 "492000 6: b6 33 00\n"
3245 "492000 6: b6 34 00\n"
3246 "492000 6: b6 35 00\n"
3247 "492000 6: b6 36 00\n"
3248 "492000 6: b6 37 00\n"
3249 "492000 6: b6 38 00\n"
3250 "492000 6: b6 39 00\n"
3251 "492000 6: b6 3a 00\n"
3252 "492000 6: b6 3b 00\n"
3253 "492000 6: b6 3c 00\n"
3254 "492000 6: b6 3d 00\n"
3255 "492000 6: b6 3e 00\n"
3256 "492000 6: b6 3f 00\n"
3257 "492000 6: b6 41 00\n"
3258 "492000 6: b6 43 00\n"
3259 "492000 6: b6 50 00\n"
3260 "492000 6: b6 51 00\n"
3261 "492000 6: b6 52 00\n"
3262 "492000 6: b6 53 00\n"
3263 "492000 6: b6 54 00\n"
3264 "492000 6: b6 55 00\n"
3265 "492000 6: b6 56 00\n"
3266 "492000 6: b6 57 00\n"
3267 "492000 6: b6 58 00\n"
3268 "492000 6: b6 59 00\n"
3269 "492000 6: b6 5a 00\n"
3270 "492000 6: b6 62 7f\n"
3271 "492000 6: b6 63 7f\n"
3272 "492000 6: b6 64 7f\n"
3273 "492000 6: b6 65 7f\n"
3274 "492000 6: b6 66 00\n"
3275 "492000 6: b6 67 00\n"
3276 "492000 6: b6 68 00\n"
3277 "492000 6: b6 69 00\n"
3278 "492000 6: b6 6a 00\n"
3279 "492000 6: b6 6b 00\n"
3280 "492000 6: b6 6c 00\n"
3281 "492000 6: b6 6d 00\n"
3282 "492000 6: b6 6e 00\n"
3283 "492000 6: b6 6f 00\n"
3284 "492000 6: b6 70 00\n"
3285 "492000 6: b6 71 00\n"
3286 "492000 6: b6 72 00\n"
3287 "492000 6: b6 73 00\n"
3288 "492000 6: b6 74 00\n"
3289 "492000 6: b6 75 00\n"
3290 "492000 6: b6 76 00\n"
3291 "492000 6: b6 77 00\n"
3292 "493000 6: 86 40 3f\n"
3293 "494000 7: b7 40 00\n"
3294 "494000 7: b7 42 00\n"
3295 "494000 7: b7 44 00\n"
3296 "494000 7: b7 45 00\n"
3297 "494000 7: b7 00 25\n"
3298 "494000 7: b7 20 45\n"
3299 "494000 7: 97 40 3f\n"
3300 "494000 7: b7 07 28\n"
3301 "494000 7: b7 0a 17\n"
3302 "494000 7: b7 46 43\n"
3303 "494000 7: b7 47 68\n"
3304 "494000 7: b7 48 0d\n"
3305 "494000 7: b7 49 32\n"
3306 "494000 7: b7 4a 57\n"
3307 "494000 7: b7 4b 7c\n"
3308 "494000 7: b7 4c 21\n"
3309 "494000 7: b7 4d 46\n"
3310 "494000 7: b7 4e 6b\n"
3311 "494000 7: b7 4f 10\n"
3312 "494000 7: b7 5b 4c\n"
3313 "494000 7: b7 5c 71\n"
3314 "494000 7: b7 5d 16\n"
3315 "494000 7: b7 5e 3b\n"
3316 "494000 7: b7 5f 60\n"
3317 "494000 7: b7 01 00\n"
3318 "494000 7: b7 02 00\n"
3319 "494000 7: b7 03 00\n"
3320 "494000 7: b7 04 00\n"
3321 "494000 7: b7 05 00\n"
3322 "494000 7: b7 08 40\n"
3323 "494000 7: b7 09 00\n"
3324 "494000 7: b7 0b 7f\n"
3325 "494000 7: b7 0c 00\n"
3326 "494000 7: b7 0d 00\n"
3327 "494000 7: b7 0e 00\n"
3328 "494000 7: b7 0f 00\n"
3329 "494000 7: b7 10 00\n"
3330 "494000 7: b7 11 00\n"
3331 "494000 7: b7 12 00\n"
3332 "494000 7: b7 13 00\n"
3333 "494000 7: b7 14 00\n"
3334 "494000 7: b7 15 00\n"
3335 "494000 7: b7 16 00\n"
3336 "494000 7: b7 17 00\n"
3337 "494000 7: b7 18 00\n"
3338 "494000 7: b7 19 00\n"
3339 "494000 7: b7 1a 00\n"
3340 "494000 7: b7 1b 00\n"
3341 "494000 7: b7 1c 00\n"
3342 "494000 7: b7 1d 00\n"
3343 "494000 7: b7 1e 00\n"
3344 "494000 7: b7 1f 00\n"
3345 "494000 7: b7 21 00\n"
3346 "494000 7: b7 22 00\n"
3347 "494000 7: b7 23 00\n"
3348 "494000 7: b7 24 00\n"
3349 "494000 7: b7 25 00\n"
3350 "494000 7: b7 27 00\n"
3351 "494000 7: b7 28 00\n"
3352 "494000 7: b7 29 00\n"
3353 "494000 7: b7 2a 00\n"
3354 "494000 7: b7 2b 7f\n"
3355 "494000 7: b7 2c 00\n"
3356 "494000 7: b7 2d 00\n"
3357 "494000 7: b7 2e 00\n"
3358 "494000 7: b7 2f 00\n"
3359 "494000 7: b7 30 00\n"
3360 "494000 7: b7 31 00\n"
3361 "494000 7: b7 32 00\n"
3362 "494000 7: b7 33 00\n"
3363 "494000 7: b7 34 00\n"
3364 "494000 7: b7 35 00\n"
3365 "494000 7: b7 36 00\n"
3366 "494000 7: b7 37 00\n"
3367 "494000 7: b7 38 00\n"
3368 "494000 7: b7 39 00\n"
3369 "494000 7: b7 3a 00\n"
3370 "494000 7: b7 3b 00\n"
3371 "494000 7: b7 3c 00\n"
3372 "494000 7: b7 3d 00\n"
3373 "494000 7: b7 3e 00\n"
3374 "494000 7: b7 3f 00\n"
3375 "494000 7: b7 41 00\n"
3376 "494000 7: b7 43 00\n"
3377 "494000 7: b7 50 00\n"
3378 "494000 7: b7 51 00\n"
3379 "494000 7: b7 52 00\n"
3380 "494000 7: b7 53 00\n"
3381 "494000 7: b7 54 00\n"
3382 "494000 7: b7 55 00\n"
3383 "494000 7: b7 56 00\n"
3384 "494000 7: b7 57 00\n"
3385 "494000 7: b7 58 00\n"
3386 "494000 7: b7 59 00\n"
3387 "494000 7: b7 5a 00\n"
3388 "494000 7: b7 62 7f\n"
3389 "494000 7: b7 63 7f\n"
3390 "494000 7: b7 64 7f\n"
3391 "494000 7: b7 65 7f\n"
3392 "494000 7: b7 66 00\n"
3393 "494000 7: b7 67 00\n"
3394 "494000 7: b7 68 00\n"
3395 "494000 7: b7 69 00\n"
3396 "494000 7: b7 6a 00\n"
3397 "494000 7: b7 6b 00\n"
3398 "494000 7: b7 6c 00\n"
3399 "494000 7: b7 6d 00\n"
3400 "494000 7: b7 6e 00\n"
3401 "494000 7: b7 6f 00\n"
3402 "494000 7: b7 70 00\n"
3403 "494000 7: b7 71 00\n"
3404 "494000 7: b7 72 00\n"
3405 "494000 7: b7 73 00\n"
3406 "494000 7: b7 74 00\n"
3407 "494000 7: b7 75 00\n"
3408 "494000 7: b7 76 00\n"
3409 "494000 7: b7 77 00\n"
3410 "495000 7: 87 40 3f\n"
3411 "496000 8: b8 40 00\n"
3412 "496000 8: b8 42 00\n"
3413 "496000 8: b8 44 00\n"
3414 "496000 8: b8 45 00\n"
3415 "496000 8: b8 00 25\n"
3416 "496000 8: b8 20 45\n"
3417 "496000 8: 98 40 3f\n"
3418 "496000 8: b8 07 28\n"
3419 "496000 8: b8 0a 17\n"
3420 "496000 8: b8 46 43\n"
3421 "496000 8: b8 47 68\n"
3422 "496000 8: b8 48 0d\n"
3423 "496000 8: b8 49 32\n"
3424 "496000 8: b8 4a 57\n"
3425 "496000 8: b8 4b 7c\n"
3426 "496000 8: b8 4c 21\n"
3427 "496000 8: b8 4d 46\n"
3428 "496000 8: b8 4e 6b\n"
3429 "496000 8: b8 4f 10\n"
3430 "496000 8: b8 5b 4c\n"
3431 "496000 8: b8 5c 71\n"
3432 "496000 8: b8 5d 16\n"
3433 "496000 8: b8 5e 3b\n"
3434 "496000 8: b8 5f 60\n"
3435 "496000 8: b8 01 00\n"
3436 "496000 8: b8 02 00\n"
3437 "496000 8: b8 03 00\n"
3438 "496000 8: b8 04 00\n"
3439 "496000 8: b8 05 00\n"
3440 "496000 8: b8 08 40\n"
3441 "496000 8: b8 09 00\n"
3442 "496000 8: b8 0b 7f\n"
3443 "496000 8: b8 0c 00\n"
3444 "496000 8: b8 0d 00\n"
3445 "496000 8: b8 0e 00\n"
3446 "496000 8: b8 0f 00\n"
3447 "496000 8: b8 10 00\n"
3448 "496000 8: b8 11 00\n"
3449 "496000 8: b8 12 00\n"
3450 "496000 8: b8 13 00\n"
3451 "496000 8: b8 14 00\n"
3452 "496000 8: b8 15 00\n"
3453 "496000 8: b8 16 00\n"
3454 "496000 8: b8 17 00\n"
3455 "496000 8: b8 18 00\n"
3456 "496000 8: b8 19 00\n"
3457 "496000 8: b8 1a 00\n"
3458 "496000 8: b8 1b 00\n"
3459 "496000 8: b8 1c 00\n"
3460 "496000 8: b8 1d 00\n"
3461 "496000 8: b8 1e 00\n"
3462 "496000 8: b8 1f 00\n"
3463 "496000 8: b8 21 00\n"
3464 "496000 8: b8 22 00\n"
3465 "496000 8: b8 23 00\n"
3466 "496000 8: b8 24 00\n"
3467 "496000 8: b8 25 00\n"
3468 "496000 8: b8 27 00\n"
3469 "496000 8: b8 28 00\n"
3470 "496000 8: b8 29 00\n"
3471 "496000 8: b8 2a 00\n"
3472 "496000 8: b8 2b 7f\n"
3473 "496000 8: b8 2c 00\n"
3474 "496000 8: b8 2d 00\n"
3475 "496000 8: b8 2e 00\n"
3476 "496000 8: b8 2f 00\n"
3477 "496000 8: b8 30 00\n"
3478 "496000 8: b8 31 00\n"
3479 "496000 8: b8 32 00\n"
3480 "496000 8: b8 33 00\n"
3481 "496000 8: b8 34 00\n"
3482 "496000 8: b8 35 00\n"
3483 "496000 8: b8 36 00\n"
3484 "496000 8: b8 37 00\n"
3485 "496000 8: b8 38 00\n"
3486 "496000 8: b8 39 00\n"
3487 "496000 8: b8 3a 00\n"
3488 "496000 8: b8 3b 00\n"
3489 "496000 8: b8 3c 00\n"
3490 "496000 8: b8 3d 00\n"
3491 "496000 8: b8 3e 00\n"
3492 "496000 8: b8 3f 00\n"
3493 "496000 8: b8 41 00\n"
3494 "496000 8: b8 43 00\n"
3495 "496000 8: b8 50 00\n"
3496 "496000 8: b8 51 00\n"
3497 "496000 8: b8 52 00\n"
3498 "496000 8: b8 53 00\n"
3499 "496000 8: b8 54 00\n"
3500 "496000 8: b8 55 00\n"
3501 "496000 8: b8 56 00\n"
3502 "496000 8: b8 57 00\n"
3503 "496000 8: b8 58 00\n"
3504 "496000 8: b8 59 00\n"
3505 "496000 8: b8 5a 00\n"
3506 "496000 8: b8 62 7f\n"
3507 "496000 8: b8 63 7f\n"
3508 "496000 8: b8 64 7f\n"
3509 "496000 8: b8 65 7f\n"
3510 "496000 8: b8 66 00\n"
3511 "496000 8: b8 67 00\n"
3512 "496000 8: b8 68 00\n"
3513 "496000 8: b8 69 00\n"
3514 "496000 8: b8 6a 00\n"
3515 "496000 8: b8 6b 00\n"
3516 "496000 8: b8 6c 00\n"
3517 "496000 8: b8 6d 00\n"
3518 "496000 8: b8 6e 00\n"
3519 "496000 8: b8 6f 00\n"
3520 "496000 8: b8 70 00\n"
3521 "496000 8: b8 71 00\n"
3522 "496000 8: b8 72 00\n"
3523 "496000 8: b8 73 00\n"
3524 "496000 8: b8 74 00\n"
3525 "496000 8: b8 75 00\n"
3526 "496000 8: b8 76 00\n"
3527 "496000 8: b8 77 00\n"
3528 "497000 8: 88 40 3f\n"
3529 "498000 10: ba 40 00\n"
3530 "498000 10: ba 42 00\n"
3531 "498000 10: ba 44 00\n"
3532 "498000 10: ba 45 00\n"
3533 "498000 10: ba 00 25\n"
3534 "498000 10: ba 20 45\n"
3535 "498000 10: 9a 40 3f\n"
3536 "498000 10: ba 07 28\n"
3537 "498000 10: ba 0a 17\n"
3538 "498000 10: ba 46 43\n"
3539 "498000 10: ba 47 68\n"
3540 "498000 10: ba 48 0d\n"
3541 "498000 10: ba 49 32\n"
3542 "498000 10: ba 4a 57\n"
3543 "498000 10: ba 4b 7c\n"
3544 "498000 10: ba 4c 21\n"
3545 "498000 10: ba 4d 46\n"
3546 "498000 10: ba 4e 6b\n"
3547 "498000 10: ba 4f 10\n"
3548 "498000 10: ba 5b 4c\n"
3549 "498000 10: ba 5c 71\n"
3550 "498000 10: ba 5d 16\n"
3551 "498000 10: ba 5e 3b\n"
3552 "498000 10: ba 5f 60\n"
3553 "498000 10: ba 01 00\n"
3554 "498000 10: ba 02 00\n"
3555 "498000 10: ba 03 00\n"
3556 "498000 10: ba 04 00\n"
3557 "498000 10: ba 05 00\n"
3558 "498000 10: ba 08 40\n"
3559 "498000 10: ba 09 00\n"
3560 "498000 10: ba 0b 7f\n"
3561 "498000 10: ba 0c 00\n"
3562 "498000 10: ba 0d 00\n"
3563 "498000 10: ba 0e 00\n"
3564 "498000 10: ba 0f 00\n"
3565 "498000 10: ba 10 00\n"
3566 "498000 10: ba 11 00\n"
3567 "498000 10: ba 12 00\n"
3568 "498000 10: ba 13 00\n"
3569 "498000 10: ba 14 00\n"
3570 "498000 10: ba 15 00\n"
3571 "498000 10: ba 16 00\n"
3572 "498000 10: ba 17 00\n"
3573 "498000 10: ba 18 00\n"
3574 "498000 10: ba 19 00\n"
3575 "498000 10: ba 1a 00\n"
3576 "498000 10: ba 1b 00\n"
3577 "498000 10: ba 1c 00\n"
3578 "498000 10: ba 1d 00\n"
3579 "498000 10: ba 1e 00\n"
3580 "498000 10: ba 1f 00\n"
3581 "498000 10: ba 21 00\n"
3582 "498000 10: ba 22 00\n"
3583 "498000 10: ba 23 00\n"
3584 "498000 10: ba 24 00\n"
3585 "498000 10: ba 25 00\n"
3586 "498000 10: ba 27 00\n"
3587 "498000 10: ba 28 00\n"
3588 "498000 10: ba 29 00\n"
3589 "498000 10: ba 2a 00\n"
3590 "498000 10: ba 2b 7f\n"
3591 "498000 10: ba 2c 00\n"
3592 "498000 10: ba 2d 00\n"
3593 "498000 10: ba 2e 00\n"
3594 "498000 10: ba 2f 00\n"
3595 "498000 10: ba 30 00\n"
3596 "498000 10: ba 31 00\n"
3597 "498000 10: ba 32 00\n"
3598 "498000 10: ba 33 00\n"
3599 "498000 10: ba 34 00\n"
3600 "498000 10: ba 35 00\n"
3601 "498000 10: ba 36 00\n"
3602 "498000 10: ba 37 00\n"
3603 "498000 10: ba 38 00\n"
3604 "498000 10: ba 39 00\n"
3605 "498000 10: ba 3a 00\n"
3606 "498000 10: ba 3b 00\n"
3607 "498000 10: ba 3c 00\n"
3608 "498000 10: ba 3d 00\n"
3609 "498000 10: ba 3e 00\n"
3610 "498000 10: ba 3f 00\n"
3611 "498000 10: ba 41 00\n"
3612 "498000 10: ba 43 00\n"
3613 "498000 10: ba 50 00\n"
3614 "498000 10: ba 51 00\n"
3615 "498000 10: ba 52 00\n"
3616 "498000 10: ba 53 00\n"
3617 "498000 10: ba 54 00\n"
3618 "498000 10: ba 55 00\n"
3619 "498000 10: ba 56 00\n"
3620 "498000 10: ba 57 00\n"
3621 "498000 10: ba 58 00\n"
3622 "498000 10: ba 59 00\n"
3623 "498000 10: ba 5a 00\n"
3624 "498000 10: ba 62 7f\n"
3625 "498000 10: ba 63 7f\n"
3626 "498000 10: ba 64 7f\n"
3627 "498000 10: ba 65 7f\n"
3628 "498000 10: ba 66 00\n"
3629 "498000 10: ba 67 00\n"
3630 "498000 10: ba 68 00\n"
3631 "498000 10: ba 69 00\n"
3632 "498000 10: ba 6a 00\n"
3633 "498000 10: ba 6b 00\n"
3634 "498000 10: ba 6c 00\n"
3635 "498000 10: ba 6d 00\n"
3636 "498000 10: ba 6e 00\n"
3637 "498000 10: ba 6f 00\n"
3638 "498000 10: ba 70 00\n"
3639 "498000 10: ba 71 00\n"
3640 "498000 10: ba 72 00\n"
3641 "498000 10: ba 73 00\n"
3642 "498000 10: ba 74 00\n"
3643 "498000 10: ba 75 00\n"
3644 "498000 10: ba 76 00\n"
3645 "498000 10: ba 77 00\n"
3646 "499000 10: 8a 40 3f\n"
3647 "500000 11: bb 40 00\n"
3648 "500000 11: bb 42 00\n"
3649 "500000 11: bb 44 00\n"
3650 "500000 11: bb 45 00\n"
3651 "500000 11: bb 00 25\n"
3652 "500000 11: bb 20 45\n"
3653 "500000 11: 9b 40 3f\n"
3654 "500000 11: bb 07 28\n"
3655 "500000 11: bb 0a 17\n"
3656 "500000 11: bb 46 43\n"
3657 "500000 11: bb 47 68\n"
3658 "500000 11: bb 48 0d\n"
3659 "500000 11: bb 49 32\n"
3660 "500000 11: bb 4a 57\n"
3661 "500000 11: bb 4b 7c\n"
3662 "500000 11: bb 4c 21\n"
3663 "500000 11: bb 4d 46\n"
3664 "500000 11: bb 4e 6b\n"
3665 "500000 11: bb 4f 10\n"
3666 "500000 11: bb 5b 4c\n"
3667 "500000 11: bb 5c 71\n"
3668 "500000 11: bb 5d 16\n"
3669 "500000 11: bb 5e 3b\n"
3670 "500000 11: bb 5f 60\n"
3671 "500000 11: bb 01 00\n"
3672 "500000 11: bb 02 00\n"
3673 "500000 11: bb 03 00\n"
3674 "500000 11: bb 04 00\n"
3675 "500000 11: bb 05 00\n"
3676 "500000 11: bb 08 40\n"
3677 "500000 11: bb 09 00\n"
3678 "500000 11: bb 0b 7f\n"
3679 "500000 11: bb 0c 00\n"
3680 "500000 11: bb 0d 00\n"
3681 "500000 11: bb 0e 00\n"
3682 "500000 11: bb 0f 00\n"
3683 "500000 11: bb 10 00\n"
3684 "500000 11: bb 11 00\n"
3685 "500000 11: bb 12 00\n"
3686 "500000 11: bb 13 00\n"
3687 "500000 11: bb 14 00\n"
3688 "500000 11: bb 15 00\n"
3689 "500000 11: bb 16 00\n"
3690 "500000 11: bb 17 00\n"
3691 "500000 11: bb 18 00\n"
3692 "500000 11: bb 19 00\n"
3693 "500000 11: bb 1a 00\n"
3694 "500000 11: bb 1b 00\n"
3695 "500000 11: bb 1c 00\n"
3696 "500000 11: bb 1d 00\n"
3697 "500000 11: bb 1e 00\n"
3698 "500000 11: bb 1f 00\n"
3699 "500000 11: bb 21 00\n"
3700 "500000 11: bb 22 00\n"
3701 "500000 11: bb 23 00\n"
3702 "500000 11: bb 24 00\n"
3703 "500000 11: bb 25 00\n"
3704 "500000 11: bb 27 00\n"
3705 "500000 11: bb 28 00\n"
3706 "500000 11: bb 29 00\n"
3707 "500000 11: bb 2a 00\n"
3708 "500000 11: bb 2b 7f\n"
3709 "500000 11: bb 2c 00\n"
3710 "500000 11: bb 2d 00\n"
3711 "500000 11: bb 2e 00\n"
3712 "500000 11: bb 2f 00\n"
3713 "500000 11: bb 30 00\n"
3714 "500000 11: bb 31 00\n"
3715 "500000 11: bb 32 00\n"
3716 "500000 11: bb 33 00\n"
3717 "500000 11: bb 34 00\n"
3718 "500000 11: bb 35 00\n"
3719 "500000 11: bb 36 00\n"
3720 "500000 11: bb 37 00\n"
3721 "500000 11: bb 38 00\n"
3722 "500000 11: bb 39 00\n"
3723 "500000 11: bb 3a 00\n"
3724 "500000 11: bb 3b 00\n"
3725 "500000 11: bb 3c 00\n"
3726 "500000 11: bb 3d 00\n"
3727 "500000 11: bb 3e 00\n"
3728 "500000 11: bb 3f 00\n"
3729 "500000 11: bb 41 00\n"
3730 "500000 11: bb 43 00\n"
3731 "500000 11: bb 50 00\n"
3732 "500000 11: bb 51 00\n"
3733 "500000 11: bb 52 00\n"
3734 "500000 11: bb 53 00\n"
3735 "500000 11: bb 54 00\n"
3736 "500000 11: bb 55 00\n"
3737 "500000 11: bb 56 00\n"
3738 "500000 11: bb 57 00\n"
3739 "500000 11: bb 58 00\n"
3740 "500000 11: bb 59 00\n"
3741 "500000 11: bb 5a 00\n"
3742 "500000 11: bb 62 7f\n"
3743 "500000 11: bb 63 7f\n"
3744 "500000 11: bb 64 7f\n"
3745 "500000 11: bb 65 7f\n"
3746 "500000 11: bb 66 00\n"
3747 "500000 11: bb 67 00\n"
3748 "500000 11: bb 68 00\n"
3749 "500000 11: bb 69 00\n"
3750 "500000 11: bb 6a 00\n"
3751 "500000 11: bb 6b 00\n"
3752 "500000 11: bb 6c 00\n"
3753 "500000 11: bb 6d 00\n"
3754 "500000 11: bb 6e 00\n"
3755 "500000 11: bb 6f 00\n"
3756 "500000 11: bb 70 00\n"
3757 "500000 11: bb 71 00\n"
3758 "500000 11: bb 72 00\n"
3759 "500000 11: bb 73 00\n"
3760 "500000 11: bb 74 00\n"
3761 "500000 11: bb 75 00\n"
3762 "500000 11: bb 76 00\n"
3763 "500000 11: bb 77 00\n"
3764 "501000 11: 8b 40 3f\n"
3765 "502000 12: bc 40 00\n"
3766 "502000 12: bc 42 00\n"
3767 "502000 12: bc 44 00\n"
3768 "502000 12: bc 45 00\n"
3769 "502000 12: bc 00 25\n"
3770 "502000 12: bc 20 45\n"
3771 "502000 12: 9c 40 3f\n"
3772 "502000 12: bc 07 28\n"
3773 "502000 12: bc 0a 17\n"
3774 "502000 12: bc 46 43\n"
3775 "502000 12: bc 47 68\n"
3776 "502000 12: bc 48 0d\n"
3777 "502000 12: bc 49 32\n"
3778 "502000 12: bc 4a 57\n"
3779 "502000 12: bc 4b 7c\n"
3780 "502000 12: bc 4c 21\n"
3781 "502000 12: bc 4d 46\n"
3782 "502000 12: bc 4e 6b\n"
3783 "502000 12: bc 4f 10\n"
3784 "502000 12: bc 5b 4c\n"
3785 "502000 12: bc 5c 71\n"
3786 "502000 12: bc 5d 16\n"
3787 "502000 12: bc 5e 3b\n"
3788 "502000 12: bc 5f 60\n"
3789 "502000 12: bc 01 00\n"
3790 "502000 12: bc 02 00\n"
3791 "502000 12: bc 03 00\n"
3792 "502000 12: bc 04 00\n"
3793 "502000 12: bc 05 00\n"
3794 "502000 12: bc 08 40\n"
3795 "502000 12: bc 09 00\n"
3796 "502000 12: bc 0b 7f\n"
3797 "502000 12: bc 0c 00\n"
3798 "502000 12: bc 0d 00\n"
3799 "502000 12: bc 0e 00\n"
3800 "502000 12: bc 0f 00\n"
3801 "502000 12: bc 10 00\n"
3802 "502000 12: bc 11 00\n"
3803 "502000 12: bc 12 00\n"
3804 "502000 12: bc 13 00\n"
3805 "502000 12: bc 14 00\n"
3806 "502000 12: bc 15 00\n"
3807 "502000 12: bc 16 00\n"
3808 "502000 12: bc 17 00\n"
3809 "502000 12: bc 18 00\n"
3810 "502000 12: bc 19 00\n"
3811 "502000 12: bc 1a 00\n"
3812 "502000 12: bc 1b 00\n"
3813 "502000 12: bc 1c 00\n"
3814 "502000 12: bc 1d 00\n"
3815 "502000 12: bc 1e 00\n"
3816 "502000 12: bc 1f 00\n"
3817 "502000 12: bc 21 00\n"
3818 "502000 12: bc 22 00\n"
3819 "502000 12: bc 23 00\n"
3820 "502000 12: bc 24 00\n"
3821 "502000 12: bc 25 00\n"
3822 "502000 12: bc 27 00\n"
3823 "502000 12: bc 28 00\n"
3824 "502000 12: bc 29 00\n"
3825 "502000 12: bc 2a 00\n"
3826 "502000 12: bc 2b 7f\n"
3827 "502000 12: bc 2c 00\n"
3828 "502000 12: bc 2d 00\n"
3829 "502000 12: bc 2e 00\n"
3830 "502000 12: bc 2f 00\n"
3831 "502000 12: bc 30 00\n"
3832 "502000 12: bc 31 00\n"
3833 "502000 12: bc 32 00\n"
3834 "502000 12: bc 33 00\n"
3835 "502000 12: bc 34 00\n"
3836 "502000 12: bc 35 00\n"
3837 "502000 12: bc 36 00\n"
3838 "502000 12: bc 37 00\n"
3839 "502000 12: bc 38 00\n"
3840 "502000 12: bc 39 00\n"
3841 "502000 12: bc 3a 00\n"
3842 "502000 12: bc 3b 00\n"
3843 "502000 12: bc 3c 00\n"
3844 "502000 12: bc 3d 00\n"
3845 "502000 12: bc 3e 00\n"
3846 "502000 12: bc 3f 00\n"
3847 "502000 12: bc 41 00\n"
3848 "502000 12: bc 43 00\n"
3849 "502000 12: bc 50 00\n"
3850 "502000 12: bc 51 00\n"
3851 "502000 12: bc 52 00\n"
3852 "502000 12: bc 53 00\n"
3853 "502000 12: bc 54 00\n"
3854 "502000 12: bc 55 00\n"
3855 "502000 12: bc 56 00\n"
3856 "502000 12: bc 57 00\n"
3857 "502000 12: bc 58 00\n"
3858 "502000 12: bc 59 00\n"
3859 "502000 12: bc 5a 00\n"
3860 "502000 12: bc 62 7f\n"
3861 "502000 12: bc 63 7f\n"
3862 "502000 12: bc 64 7f\n"
3863 "502000 12: bc 65 7f\n"
3864 "502000 12: bc 66 00\n"
3865 "502000 12: bc 67 00\n"
3866 "502000 12: bc 68 00\n"
3867 "502000 12: bc 69 00\n"
3868 "502000 12: bc 6a 00\n"
3869 "502000 12: bc 6b 00\n"
3870 "502000 12: bc 6c 00\n"
3871 "502000 12: bc 6d 00\n"
3872 "502000 12: bc 6e 00\n"
3873 "502000 12: bc 6f 00\n"
3874 "502000 12: bc 70 00\n"
3875 "502000 12: bc 71 00\n"
3876 "502000 12: bc 72 00\n"
3877 "502000 12: bc 73 00\n"
3878 "502000 12: bc 74 00\n"
3879 "502000 12: bc 75 00\n"
3880 "502000 12: bc 76 00\n"
3881 "502000 12: bc 77 00\n"
3882 "503000 12: 8c 40 3f\n"
3883 "504000 13: bd 40 00\n"
3884 "504000 13: bd 42 00\n"
3885 "504000 13: bd 44 00\n"
3886 "504000 13: bd 45 00\n"
3887 "504000 13: bd 00 25\n"
3888 "504000 13: bd 20 45\n"
3889 "504000 13: 9d 40 41\n"
3890 "504000 13: bd 07 28\n"
3891 "504000 13: bd 0a 17\n"
3892 "504000 13: bd 46 43\n"
3893 "504000 13: bd 47 68\n"
3894 "504000 13: bd 48 0d\n"
3895 "504000 13: bd 49 32\n"
3896 "504000 13: bd 4a 57\n"
3897 "504000 13: bd 4b 7c\n"
3898 "504000 13: bd 4c 21\n"
3899 "504000 13: bd 4d 46\n"
3900 "504000 13: bd 4e 6b\n"
3901 "504000 13: bd 4f 10\n"
3902 "504000 13: bd 5b 4c\n"
3903 "504000 13: bd 5c 71\n"
3904 "504000 13: bd 5d 16\n"
3905 "504000 13: bd 5e 3b\n"
3906 "504000 13: bd 5f 60\n"
3907 "504000 13: bd 01 00\n"
3908 "504000 13: bd 02 00\n"
3909 "504000 13: bd 03 00\n"
3910 "504000 13: bd 04 00\n"
3911 "504000 13: bd 05 00\n"
3912 "504000 13: bd 08 40\n"
3913 "504000 13: bd 09 00\n"
3914 "504000 13: bd 0b 7f\n"
3915 "504000 13: bd 0c 00\n"
3916 "504000 13: bd 0d 00\n"
3917 "504000 13: bd 0e 00\n"
3918 "504000 13: bd 0f 00\n"
3919 "504000 13: bd 10 00\n"
3920 "504000 13: bd 11 00\n"
3921 "504000 13: bd 12 00\n"
3922 "504000 13: bd 13 00\n"
3923 "504000 13: bd 14 00\n"
3924 "504000 13: bd 15 00\n"
3925 "504000 13: bd 16 00\n"
3926 "504000 13: bd 17 00\n"
3927 "504000 13: bd 18 00\n"
3928 "504000 13: bd 19 00\n"
3929 "504000 13: bd 1a 00\n"
3930 "504000 13: bd 1b 00\n"
3931 "504000 13: bd 1c 00\n"
3932 "504000 13: bd 1d 00\n"
3933 "504000 13: bd 1e 00\n"
3934 "504000 13: bd 1f 00\n"
3935 "504000 13: bd 21 00\n"
3936 "504000 13: bd 22 00\n"
3937 "504000 13: bd 23 00\n"
3938 "504000 13: bd 24 00\n"
3939 "504000 13: bd 25 00\n"
3940 "504000 13: bd 27 00\n"
3941 "504000 13: bd 28 00\n"
3942 "504000 13: bd 29 00\n"
3943 "504000 13: bd 2a 00\n"
3944 "504000 13: bd 2b 7f\n"
3945 "504000 13: bd 2c 00\n"
3946 "504000 13: bd 2d 00\n"
3947 "504000 13: bd 2e 00\n"
3948 "504000 13: bd 2f 00\n"
3949 "504000 13: bd 30 00\n"
3950 "504000 13: bd 31 00\n"
3951 "504000 13: bd 32 00\n"
3952 "504000 13: bd 33 00\n"
3953 "504000 13: bd 34 00\n"
3954 "504000 13: bd 35 00\n"
3955 "504000 13: bd 36 00\n"
3956 "504000 13: bd 37 00\n"
3957 "504000 13: bd 38 00\n"
3958 "504000 13: bd 39 00\n"
3959 "504000 13: bd 3a 00\n"
3960 "504000 13: bd 3b 00\n"
3961 "504000 13: bd 3c 00\n"
3962 "504000 13: bd 3d 00\n"
3963 "504000 13: bd 3e 00\n"
3964 "504000 13: bd 3f 00\n"
3965 "504000 13: bd 41 00\n"
3966 "504000 13: bd 43 00\n"
3967 "504000 13: bd 50 00\n"
3968 "504000 13: bd 51 00\n"
3969 "504000 13: bd 52 00\n"
3970 "504000 13: bd 53 00\n"
3971 "504000 13: bd 54 00\n"
3972 "504000 13: bd 55 00\n"
3973 "504000 13: bd 56 00\n"
3974 "504000 13: bd 57 00\n"
3975 "504000 13: bd 58 00\n"
3976 "504000 13: bd 59 00\n"
3977 "504000 13: bd 5a 00\n"
3978 "504000 13: bd 62 7f\n"
3979 "504000 13: bd 63 7f\n"
3980 "504000 13: bd 64 7f\n"
3981 "504000 13: bd 65 7f\n"
3982 "504000 13: bd 66 00\n"
3983 "504000 13: bd 67 00\n"
3984 "504000 13: bd 68 00\n"
3985 "504000 13: bd 69 00\n"
3986 "504000 13: bd 6a 00\n"
3987 "504000 13: bd 6b 00\n"
3988 "504000 13: bd 6c 00\n"
3989 "504000 13: bd 6d 00\n"
3990 "504000 13: bd 6e 00\n"
3991 "504000 13: bd 6f 00\n"
3992 "504000 13: bd 70 00\n"
3993 "504000 13: bd 71 00\n"
3994 "504000 13: bd 72 00\n"
3995 "504000 13: bd 73 00\n"
3996 "504000 13: bd 74 00\n"
3997 "504000 13: bd 75 00\n"
3998 "504000 13: bd 76 00\n"
3999 "504000 13: bd 77 00\n"
4000 "505000 13: 8d 40 41\n"
4001 "506000 14: be 40 00\n"
4002 "506000 14: be 42 00\n"
4003 "506000 14: be 44 00\n"
4004 "506000 14: be 45 00\n"
4005 "506000 14: be 00 25\n"
4006 "506000 14: be 20 45\n"
4007 "506000 14: 9e 40 43\n"
4008 "506000 14: be 07 28\n"
4009 "506000 14: be 0a 17\n"
4010 "506000 14: be 46 43\n"
4011 "506000 14: be 47 68\n"
4012 "506000 14: be 48 0d\n"
4013 "506000 14: be 49 32\n"
4014 "506000 14: be 4a 57\n"
4015 "506000 14: be 4b 7c\n"
4016 "506000 14: be 4c 21\n"
4017 "506000 14: be 4d 46\n"
4018 "506000 14: be 4e 6b\n"
4019 "506000 14: be 4f 10\n"
4020 "506000 14: be 5b 4c\n"
4021 "506000 14: be 5c 71\n"
4022 "506000 14: be 5d 16\n"
4023 "506000 14: be 5e 3b\n"
4024 "506000 14: be 5f 60\n"
4025 "506000 14: be 01 00\n"
4026 "506000 14: be 02 00\n"
4027 "506000 14: be 03 00\n"
4028 "506000 14: be 04 00\n"
4029 "506000 14: be 05 00\n"
4030 "506000 14: be 08 40\n"
4031 "506000 14: be 09 00\n"
4032 "506000 14: be 0b 7f\n"
4033 "506000 14: be 0c 00\n"
4034 "506000 14: be 0d 00\n"
4035 "506000 14: be 0e 00\n"
4036 "506000 14: be 0f 00\n"
4037 "506000 14: be 10 00\n"
4038 "506000 14: be 11 00\n"
4039 "506000 14: be 12 00\n"
4040 "506000 14: be 13 00\n"
4041 "506000 14: be 14 00\n"
4042 "506000 14: be 15 00\n"
4043 "506000 14: be 16 00\n"
4044 "506000 14: be 17 00\n"
4045 "506000 14: be 18 00\n"
4046 "506000 14: be 19 00\n"
4047 "506000 14: be 1a 00\n"
4048 "506000 14: be 1b 00\n"
4049 "506000 14: be 1c 00\n"
4050 "506000 14: be 1d 00\n"
4051 "506000 14: be 1e 00\n"
4052 "506000 14: be 1f 00\n"
4053 "506000 14: be 21 00\n"
4054 "506000 14: be 22 00\n"
4055 "506000 14: be 23 00\n"
4056 "506000 14: be 24 00\n"
4057 "506000 14: be 25 00\n"
4058 "506000 14: be 27 00\n"
4059 "506000 14: be 28 00\n"
4060 "506000 14: be 29 00\n"
4061 "506000 14: be 2a 00\n"
4062 "506000 14: be 2b 7f\n"
4063 "506000 14: be 2c 00\n"
4064 "506000 14: be 2d 00\n"
4065 "506000 14: be 2e 00\n"
4066 "506000 14: be 2f 00\n"
4067 "506000 14: be 30 00\n"
4068 "506000 14: be 31 00\n"
4069 "506000 14: be 32 00\n"
4070 "506000 14: be 33 00\n"
4071 "506000 14: be 34 00\n"
4072 "506000 14: be 35 00\n"
4073 "506000 14: be 36 00\n"
4074 "506000 14: be 37 00\n"
4075 "506000 14: be 38 00\n"
4076 "506000 14: be 39 00\n"
4077 "506000 14: be 3a 00\n"
4078 "506000 14: be 3b 00\n"
4079 "506000 14: be 3c 00\n"
4080 "506000 14: be 3d 00\n"
4081 "506000 14: be 3e 00\n"
4082 "506000 14: be 3f 00\n"
4083 "506000 14: be 41 00\n"
4084 "506000 14: be 43 00\n"
4085 "506000 14: be 50 00\n"
4086 "506000 14: be 51 00\n"
4087 "506000 14: be 52 00\n"
4088 "506000 14: be 53 00\n"
4089 "506000 14: be 54 00\n"
4090 "506000 14: be 55 00\n"
4091 "506000 14: be 56 00\n"
4092 "506000 14: be 57 00\n"
4093 "506000 14: be 58 00\n"
4094 "506000 14: be 59 00\n"
4095 "506000 14: be 5a 00\n"
4096 "506000 14: be 62 7f\n"
4097 "506000 14: be 63 7f\n"
4098 "506000 14: be 64 7f\n"
4099 "506000 14: be 65 7f\n"
4100 "506000 14: be 66 00\n"
4101 "506000 14: be 67 00\n"
4102 "506000 14: be 68 00\n"
4103 "506000 14: be 69 00\n"
4104 "506000 14: be 6a 00\n"
4105 "506000 14: be 6b 00\n"
4106 "506000 14: be 6c 00\n"
4107 "506000 14: be 6d 00\n"
4108 "506000 14: be 6e 00\n"
4109 "506000 14: be 6f 00\n"
4110 "506000 14: be 70 00\n"
4111 "506000 14: be 71 00\n"
4112 "506000 14: be 72 00\n"
4113 "506000 14: be 73 00\n"
4114 "506000 14: be 74 00\n"
4115 "506000 14: be 75 00\n"
4116 "506000 14: be 76 00\n"
4117 "506000 14: be 77 00\n"
4118 "507000 14: 8e 40 43\n"
4119 "508000 15: bf 40 00\n"
4120 "508000 15: bf 42 00\n"
4121 "508000 15: bf 44 00\n"
4122 "508000 15: bf 45 00\n"
4123 "508000 15: bf 00 25\n"
4124 "508000 15: bf 20 45\n"
4125 "508000 15: 9f 40 45\n"
4126 "508000 15: bf 07 28\n"
4127 "508000 15: bf 0a 17\n"
4128 "508000 15: bf 46 43\n"
4129 "508000 15: bf 47 68\n"
4130 "508000 15: bf 48 0d\n"
4131 "508000 15: bf 49 32\n"
4132 "508000 15: bf 4a 57\n"
4133 "508000 15: bf 4b 7c\n"
4134 "508000 15: bf 4c 21\n"
4135 "508000 15: bf 4d 46\n"
4136 "508000 15: bf 4e 6b\n"
4137 "508000 15: bf 4f 10\n"
4138 "508000 15: bf 5b 4c\n"
4139 "508000 15: bf 5c 71\n"
4140 "508000 15: bf 5d 16\n"
4141 "508000 15: bf 5e 3b\n"
4142 "508000 15: bf 5f 60\n"
4143 "508000 15: bf 01 00\n"
4144 "508000 15: bf 02 00\n"
4145 "508000 15: bf 03 00\n"
4146 "508000 15: bf 04 00\n"
4147 "508000 15: bf 05 00\n"
4148 "508000 15: bf 08 40\n"
4149 "508000 15: bf 09 00\n"
4150 "508000 15: bf 0b 7f\n"
4151 "508000 15: bf 0c 00\n"
4152 "508000 15: bf 0d 00\n"
4153 "508000 15: bf 0e 00\n"
4154 "508000 15: bf 0f 00\n"
4155 "508000 15: bf 10 00\n"
4156 "508000 15: bf 11 00\n"
4157 "508000 15: bf 12 00\n"
4158 "508000 15: bf 13 00\n"
4159 "508000 15: bf 14 00\n"
4160 "508000 15: bf 15 00\n"
4161 "508000 15: bf 16 00\n"
4162 "508000 15: bf 17 00\n"
4163 "508000 15: bf 18 00\n"
4164 "508000 15: bf 19 00\n"
4165 "508000 15: bf 1a 00\n"
4166 "508000 15: bf 1b 00\n"
4167 "508000 15: bf 1c 00\n"
4168 "508000 15: bf 1d 00\n"
4169 "508000 15: bf 1e 00\n"
4170 "508000 15: bf 1f 00\n"
4171 "508000 15: bf 21 00\n"
4172 "508000 15: bf 22 00\n"
4173 "508000 15: bf 23 00\n"
4174 "508000 15: bf 24 00\n"
4175 "508000 15: bf 25 00\n"
4176 "508000 15: bf 27 00\n"
4177 "508000 15: bf 28 00\n"
4178 "508000 15: bf 29 00\n"
4179 "508000 15: bf 2a 00\n"
4180 "508000 15: bf 2b 7f\n"
4181 "508000 15: bf 2c 00\n"
4182 "508000 15: bf 2d 00\n"
4183 "508000 15: bf 2e 00\n"
4184 "508000 15: bf 2f 00\n"
4185 "508000 15: bf 30 00\n"
4186 "508000 15: bf 31 00\n"
4187 "508000 15: bf 32 00\n"
4188 "508000 15: bf 33 00\n"
4189 "508000 15: bf 34 00\n"
4190 "508000 15: bf 35 00\n"
4191 "508000 15: bf 36 00\n"
4192 "508000 15: bf 37 00\n"
4193 "508000 15: bf 38 00\n"
4194 "508000 15: bf 39 00\n"
4195 "508000 15: bf 3a 00\n"
4196 "508000 15: bf 3b 00\n"
4197 "508000 15: bf 3c 00\n"
4198 "508000 15: bf 3d 00\n"
4199 "508000 15: bf 3e 00\n"
4200 "508000 15: bf 3f 00\n"
4201 "508000 15: bf 41 00\n"
4202 "508000 15: bf 43 00\n"
4203 "508000 15: bf 50 00\n"
4204 "508000 15: bf 51 00\n"
4205 "508000 15: bf 52 00\n"
4206 "508000 15: bf 53 00\n"
4207 "508000 15: bf 54 00\n"
4208 "508000 15: bf 55 00\n"
4209 "508000 15: bf 56 00\n"
4210 "508000 15: bf 57 00\n"
4211 "508000 15: bf 58 00\n"
4212 "508000 15: bf 59 00\n"
4213 "508000 15: bf 5a 00\n"
4214 "508000 15: bf 62 7f\n"
4215 "508000 15: bf 63 7f\n"
4216 "508000 15: bf 64 7f\n"
4217 "508000 15: bf 65 7f\n"
4218 "508000 15: bf 66 00\n"
4219 "508000 15: bf 67 00\n"
4220 "508000 15: bf 68 00\n"
4221 "508000 15: bf 69 00\n"
4222 "508000 15: bf 6a 00\n"
4223 "508000 15: bf 6b 00\n"
4224 "508000 15: bf 6c 00\n"
4225 "508000 15: bf 6d 00\n"
4226 "508000 15: bf 6e 00\n"
4227 "508000 15: bf 6f 00\n"
4228 "508000 15: bf 70 00\n"
4229 "508000 15: bf 71 00\n"
4230 "508000 15: bf 72 00\n"
4231 "508000 15: bf 73 00\n"
4232 "508000 15: bf 74 00\n"
4233 "508000 15: bf 75 00\n"
4234 "508000 15: bf 76 00\n"
4235 "508000 15: bf 77 00\n"
4236 "509000 15: 8f 40 45\n"
4237 "510000 0: b0 00 25\n"
4238 "510000 0: b0 20 45\n"
4239 "510000 0: 90 40 47\n"
4240 "510000 0: b0 01 00\n"
4241 "510000 0: b0 03 00\n"
4242 "510000 0: b0 05 00\n"
4243 "510000 0: b0 08 40\n"
4244 "510000 0: b0 0b 7f\n"
4245 "510000 0: b0 0d 00\n"
4246 "510000 0: b0 0f 00\n"
4247 "510000 0: b0 11 00\n"
4248 "510000 0: b0 13 00\n"
4249 "510000 0: b0 15 00\n"
4250 "510000 0: b0 17 00\n"
4251 "510000 0: b0 19 00\n"
4252 "510000 0: b0 1b 00\n"
4253 "510000 0: b0 1d 00\n"
4254 "510000 0: b0 1f 00\n"
4255 "510000 0: b0 22 00\n"
4256 "510000 0: b0 24 00\n"
4257 "510000 0: b0 27 00\n"
4258 "510000 0: b0 29 00\n"
4259 "510000 0: b0 2b 7f\n"
4260 "510000 0: b0 2d 00\n"
4261 "510000 0: b0 2f 00\n"
4262 "510000 0: b0 31 00\n"
4263 "510000 0: b0 33 00\n"
4264 "510000 0: b0 35 00\n"
4265 "510000 0: b0 37 00\n"
4266 "510000 0: b0 39 00\n"
4267 "510000 0: b0 3b 00\n"
4268 "510000 0: b0 3d 00\n"
4269 "510000 0: b0 3f 00\n"
4270 "510000 0: b0 43 00\n"
4271 "510000 0: b0 50 00\n"
4272 "510000 0: b0 52 00\n"
4273 "510000 0: b0 54 00\n"
4274 "510000 0: b0 56 00\n"
4275 "510000 0: b0 58 00\n"
4276 "510000 0: b0 5a 00\n"
4277 "510000 0: b0 66 00\n"
4278 "510000 0: b0 68 00\n"
4279 "510000 0: b0 6a 00\n"
4280 "510000 0: b0 6c 00\n"
4281 "510000 0: b0 6e 00\n"
4282 "510000 0: b0 70 00\n"
4283 "510000 0: b0 72 00\n"
4284 "510000 0: b0 74 00\n"
4285 "510000 0: b0 76 00\n"
4286 "510000 0: b0 02 00\n"
4287 "510000 0: b0 04 00\n"
4288 "510000 0: b0 09 00\n"
4289 "510000 0: b0 0c 00\n"
4290 "510000 0: b0 0e 00\n"
4291 "510000 0: b0 10 00\n"
4292 "510000 0: b0 12 00\n"
4293 "510000 0: b0 14 00\n"
4294 "510000 0: b0 16 00\n"
4295 "510000 0: b0 18 00\n"
4296 "510000 0: b0 1a 00\n"
4297 "510000 0: b0 1c 00\n"
4298 "510000 0: b0 1e 00\n"
4299 "510000 0: b0 21 00\n"
4300 "510000 0: b0 23 00\n"
4301 "510000 0: b0 25 00\n"
4302 "510000 0: b0 28 00\n"
4303 "510000 0: b0 2a 00\n"
4304 "510000 0: b0 2c 00\n"
4305 "510000 0: b0 2e 00\n"
4306 "510000 0: b0 30 00\n"
4307 "510000 0: b0 32 00\n"
4308 "510000 0: b0 34 00\n"
4309 "510000 0: b0 36 00\n"
4310 "510000 0: b0 38 00\n"
4311 "510000 0: b0 3a 00\n"
4312 "510000 0: b0 3c 00\n"
4313 "510000 0: b0 3e 00\n"
4314 "510000 0: b0 41 00\n"
4315 "510000 0: b0 51 00\n"
4316 "510000 0: b0 53 00\n"
4317 "510000 0: b0 55 00\n"
4318 "510000 0: b0 57 00\n"
4319 "510000 0: b0 59 00\n"
4320 "510000 0: b0 62 7f\n"
4321 "510000 0: b0 63 7f\n"
4322 "510000 0: b0 64 7f\n"
4323 "510000 0: b0 65 7f\n"
4324 "510000 0: b0 67 00\n"
4325 "510000 0: b0 69 00\n"
4326 "510000 0: b0 6b 00\n"
4327 "510000 0: b0 6d 00\n"
4328 "510000 0: b0 6f 00\n"
4329 "510000 0: b0 71 00\n"
4330 "510000 0: b0 73 00\n"
4331 "510000 0: b0 75 00\n"
4332 "510000 0: b0 77 00\n"
4333 "511000 0: 80 40 47\n"
4334 "512000 1: b1 00 25\n"
4335 "512000 1: b1 20 45\n"
4336 "512000 1: 91 40 49\n"
4337 "512000 1: b1 01 00\n"
4338 "512000 1: b1 03 00\n"
4339 "512000 1: b1 05 00\n"
4340 "512000 1: b1 08 40\n"
4341 "512000 1: b1 0b 7f\n"
4342 "512000 1: b1 0d 00\n"
4343 "512000 1: b1 0f 00\n"
4344 "512000 1: b1 11 00\n"
4345 "512000 1: b1 13 00\n"
4346 "512000 1: b1 15 00\n"
4347 "512000 1: b1 17 00\n"
4348 "512000 1: b1 19 00\n"
4349 "512000 1: b1 1b 00\n"
4350 "512000 1: b1 1d 00\n"
4351 "512000 1: b1 1f 00\n"
4352 "512000 1: b1 22 00\n"
4353 "512000 1: b1 24 00\n"
4354 "512000 1: b1 27 00\n"
4355 "512000 1: b1 29 00\n"
4356 "512000 1: b1 2b 7f\n"
4357 "512000 1: b1 2d 00\n"
4358 "512000 1: b1 2f 00\n"
4359 "512000 1: b1 31 00\n"
4360 "512000 1: b1 33 00\n"
4361 "512000 1: b1 35 00\n"
4362 "512000 1: b1 37 00\n"
4363 "512000 1: b1 39 00\n"
4364 "512000 1: b1 3b 00\n"
4365 "512000 1: b1 3d 00\n"
4366 "512000 1: b1 3f 00\n"
4367 "512000 1: b1 43 00\n"
4368 "512000 1: b1 50 00\n"
4369 "512000 1: b1 52 00\n"
4370 "512000 1: b1 54 00\n"
4371 "512000 1: b1 56 00\n"
4372 "512000 1: b1 58 00\n"
4373 "512000 1: b1 5a 00\n"
4374 "512000 1: b1 66 00\n"
4375 "512000 1: b1 68 00\n"
4376 "512000 1: b1 6a 00\n"
4377 "512000 1: b1 6c 00\n"
4378 "512000 1: b1 6e 00\n"
4379 "512000 1: b1 70 00\n"
4380 "512000 1: b1 72 00\n"
4381 "512000 1: b1 74 00\n"
4382 "512000 1: b1 76 00\n"
4383 "512000 1: b1 02 00\n"
4384 "512000 1: b1 04 00\n"
4385 "512000 1: b1 09 00\n"
4386 "512000 1: b1 0c 00\n"
4387 "512000 1: b1 0e 00\n"
4388 "512000 1: b1 10 00\n"
4389 "512000 1: b1 12 00\n"
4390 "512000 1: b1 14 00\n"
4391 "512000 1: b1 16 00\n"
4392 "512000 1: b1 18 00\n"
4393 "512000 1: b1 1a 00\n"
4394 "512000 1: b1 1c 00\n"
4395 "512000 1: b1 1e 00\n"
4396 "512000 1: b1 21 00\n"
4397 "512000 1: b1 23 00\n"
4398 "512000 1: b1 25 00\n"
4399 "512000 1: b1 28 00\n"
4400 "512000 1: b1 2a 00\n"
4401 "512000 1: b1 2c 00\n"
4402 "512000 1: b1 2e 00\n"
4403 "512000 1: b1 30 00\n"
4404 "512000 1: b1 32 00\n"
4405 "512000 1: b1 34 00\n"
4406 "512000 1: b1 36 00\n"
4407 "512000 1: b1 38 00\n"
4408 "512000 1: b1 3a 00\n"
4409 "512000 1: b1 3c 00\n"
4410 "512000 1: b1 3e 00\n"
4411 "512000 1: b1 41 00\n"
4412 "512000 1: b1 51 00\n"
4413 "512000 1: b1 53 00\n"
4414 "512000 1: b1 55 00\n"
4415 "512000 1: b1 57 00\n"
4416 "512000 1: b1 59 00\n"
4417 "512000 1: b1 62 7f\n"
4418 "512000 1: b1 63 7f\n"
4419 "512000 1: b1 64 7f\n"
4420 "512000 1: b1 65 7f\n"
4421 "512000 1: b1 67 00\n"
4422 "512000 1: b1 69 00\n"
4423 "512000 1: b1 6b 00\n"
4424 "512000 1: b1 6d 00\n"
4425 "512000 1: b1 6f 00\n"
4426 "512000 1: b1 71 00\n"
4427 "512000 1: b1 73 00\n"
4428 "512000 1: b1 75 00\n"
4429 "512000 1: b1 77 00\n"
4430 "513000 1: 81 40 49\n"
4431 "514000 2: b2 00 25\n"
4432 "514000 2: b2 20 45\n"
4433 "514000 2: 92 40 49\n"
4434 "514000 2: b2 01 00\n"
4435 "514000 2: b2 03 00\n"
4436 "514000 2: b2 05 00\n"
4437 "514000 2: b2 08 40\n"
4438 "514000 2: b2 0b 7f\n"
4439 "514000 2: b2 0d 00\n"
4440 "514000 2: b2 0f 00\n"
4441 "514000 2: b2 11 00\n"
4442 "514000 2: b2 13 00\n"
4443 "514000 2: b2 15 00\n"
4444 "514000 2: b2 17 00\n"
4445 "514000 2: b2 19 00\n"
4446 "514000 2: b2 1b 00\n"
4447 "514000 2: b2 1d 00\n"
4448 "514000 2: b2 1f 00\n"
4449 "514000 2: b2 22 00\n"
4450 "514000 2: b2 24 00\n"
4451 "514000 2: b2 27 00\n"
4452 "514000 2: b2 29 00\n"
4453 "514000 2: b2 2b 7f\n"
4454 "514000 2: b2 2d 00\n"
4455 "514000 2: b2 2f 00\n"
4456 "514000 2: b2 31 00\n"
4457 "514000 2: b2 33 00\n"
4458 "514000 2: b2 35 00\n"
4459 "514000 2: b2 37 00\n"
4460 "514000 2: b2 39 00\n"
4461 "514000 2: b2 3b 00\n"
4462 "514000 2: b2 3d 00\n"
4463 "514000 2: b2 3f 00\n"
4464 "514000 2: b2 43 00\n"
4465 "514000 2: b2 50 00\n"
4466 "514000 2: b2 52 00\n"
4467 "514000 2: b2 54 00\n"
4468 "514000 2: b2 56 00\n"
4469 "514000 2: b2 58 00\n"
4470 "514000 2: b2 5a 00\n"
4471 "514000 2: b2 66 00\n"
4472 "514000 2: b2 68 00\n"
4473 "514000 2: b2 6a 00\n"
4474 "514000 2: b2 6c 00\n"
4475 "514000 2: b2 6e 00\n"
4476 "514000 2: b2 70 00\n"
4477 "514000 2: b2 72 00\n"
4478 "514000 2: b2 74 00\n"
4479 "514000 2: b2 76 00\n"
4480 "514000 2: b2 02 00\n"
4481 "514000 2: b2 04 00\n"
4482 "514000 2: b2 09 00\n"
4483 "514000 2: b2 0c 00\n"
4484 "514000 2: b2 0e 00\n"
4485 "514000 2: b2 10 00\n"
4486 "514000 2: b2 12 00\n"
4487 "514000 2: b2 14 00\n"
4488 "514000 2: b2 16 00\n"
4489 "514000 2: b2 18 00\n"
4490 "514000 2: b2 1a 00\n"
4491 "514000 2: b2 1c 00\n"
4492 "514000 2: b2 1e 00\n"
4493 "514000 2: b2 21 00\n"
4494 "514000 2: b2 23 00\n"
4495 "514000 2: b2 25 00\n"
4496 "514000 2: b2 28 00\n"
4497 "514000 2: b2 2a 00\n"
4498 "514000 2: b2 2c 00\n"
4499 "514000 2: b2 2e 00\n"
4500 "514000 2: b2 30 00\n"
4501 "514000 2: b2 32 00\n"
4502 "514000 2: b2 34 00\n"
4503 "514000 2: b2 36 00\n"
4504 "514000 2: b2 38 00\n"
4505 "514000 2: b2 3a 00\n"
4506 "514000 2: b2 3c 00\n"
4507 "514000 2: b2 3e 00\n"
4508 "514000 2: b2 41 00\n"
4509 "514000 2: b2 51 00\n"
4510 "514000 2: b2 53 00\n"
4511 "514000 2: b2 55 00\n"
4512 "514000 2: b2 57 00\n"
4513 "514000 2: b2 59 00\n"
4514 "514000 2: b2 62 7f\n"
4515 "514000 2: b2 63 7f\n"
4516 "514000 2: b2 64 7f\n"
4517 "514000 2: b2 65 7f\n"
4518 "514000 2: b2 67 00\n"
4519 "514000 2: b2 69 00\n"
4520 "514000 2: b2 6b 00\n"
4521 "514000 2: b2 6d 00\n"
4522 "514000 2: b2 6f 00\n"
4523 "514000 2: b2 71 00\n"
4524 "514000 2: b2 73 00\n"
4525 "514000 2: b2 75 00\n"
4526 "514000 2: b2 77 00\n"
4527 "515000 2: 82 40 49\n"
4528 "516000 3: b3 00 25\n"
4529 "516000 3: b3 20 45\n"
4530 "516000 3: 93 40 4b\n"
4531 "516000 3: b3 01 00\n"
4532 "516000 3: b3 03 00\n"
4533 "516000 3: b3 05 00\n"
4534 "516000 3: b3 08 40\n"
4535 "516000 3: b3 0b 7f\n"
4536 "516000 3: b3 0d 00\n"
4537 "516000 3: b3 0f 00\n"
4538 "516000 3: b3 11 00\n"
4539 "516000 3: b3 13 00\n"
4540 "516000 3: b3 15 00\n"
4541 "516000 3: b3 17 00\n"
4542 "516000 3: b3 19 00\n"
4543 "516000 3: b3 1b 00\n"
4544 "516000 3: b3 1d 00\n"
4545 "516000 3: b3 1f 00\n"
4546 "516000 3: b3 22 00\n"
4547 "516000 3: b3 24 00\n"
4548 "516000 3: b3 27 00\n"
4549 "516000 3: b3 29 00\n"
4550 "516000 3: b3 2b 7f\n"
4551 "516000 3: b3 2d 00\n"
4552 "516000 3: b3 2f 00\n"
4553 "516000 3: b3 31 00\n"
4554 "516000 3: b3 33 00\n"
4555 "516000 3: b3 35 00\n"
4556 "516000 3: b3 37 00\n"
4557 "516000 3: b3 39 00\n"
4558 "516000 3: b3 3b 00\n"
4559 "516000 3: b3 3d 00\n"
4560 "516000 3: b3 3f 00\n"
4561 "516000 3: b3 43 00\n"
4562 "516000 3: b3 50 00\n"
4563 "516000 3: b3 52 00\n"
4564 "516000 3: b3 54 00\n"
4565 "516000 3: b3 56 00\n"
4566 "516000 3: b3 58 00\n"
4567 "516000 3: b3 5a 00\n"
4568 "516000 3: b3 66 00\n"
4569 "516000 3: b3 68 00\n"
4570 "516000 3: b3 6a 00\n"
4571 "516000 3: b3 6c 00\n"
4572 "516000 3: b3 6e 00\n"
4573 "516000 3: b3 70 00\n"
4574 "516000 3: b3 72 00\n"
4575 "516000 3: b3 74 00\n"
4576 "516000 3: b3 76 00\n"
4577 "516000 3: b3 02 00\n"
4578 "516000 3: b3 04 00\n"
4579 "516000 3: b3 09 00\n"
4580 "516000 3: b3 0c 00\n"
4581 "516000 3: b3 0e 00\n"
4582 "516000 3: b3 10 00\n"
4583 "516000 3: b3 12 00\n"
4584 "516000 3: b3 14 00\n"
4585 "516000 3: b3 16 00\n"
4586 "516000 3: b3 18 00\n"
4587 "516000 3: b3 1a 00\n"
4588 "516000 3: b3 1c 00\n"
4589 "516000 3: b3 1e 00\n"
4590 "516000 3: b3 21 00\n"
4591 "516000 3: b3 23 00\n"
4592 "516000 3: b3 25 00\n"
4593 "516000 3: b3 28 00\n"
4594 "516000 3: b3 2a 00\n"
4595 "516000 3: b3 2c 00\n"
4596 "516000 3: b3 2e 00\n"
4597 "516000 3: b3 30 00\n"
4598 "516000 3: b3 32 00\n"
4599 "516000 3: b3 34 00\n"
4600 "516000 3: b3 36 00\n"
4601 "516000 3: b3 38 00\n"
4602 "516000 3: b3 3a 00\n"
4603 "516000 3: b3 3c 00\n"
4604 "516000 3: b3 3e 00\n"
4605 "516000 3: b3 41 00\n"
4606 "516000 3: b3 51 00\n"
4607 "516000 3: b3 53 00\n"
4608 "516000 3: b3 55 00\n"
4609 "516000 3: b3 57 00\n"
4610 "516000 3: b3 59 00\n"
4611 "516000 3: b3 62 7f\n"
4612 "516000 3: b3 63 7f\n"
4613 "516000 3: b3 64 7f\n"
4614 "516000 3: b3 65 7f\n"
4615 "516000 3: b3 67 00\n"
4616 "516000 3: b3 69 00\n"
4617 "516000 3: b3 6b 00\n"
4618 "516000 3: b3 6d 00\n"
4619 "516000 3: b3 6f 00\n"
4620 "516000 3: b3 71 00\n"
4621 "516000 3: b3 73 00\n"
4622 "516000 3: b3 75 00\n"
4623 "516000 3: b3 77 00\n"
4624 "517000 3: 83 40 4b\n"
4625 "518000 4: b4 00 25\n"
4626 "518000 4: b4 20 45\n"
4627 "518000 4: 94 40 4d\n"
4628 "518000 4: b4 01 00\n"
4629 "518000 4: b4 03 00\n"
4630 "518000 4: b4 05 00\n"
4631 "518000 4: b4 08 40\n"
4632 "518000 4: b4 0b 7f\n"
4633 "518000 4: b4 0d 00\n"
4634 "518000 4: b4 0f 00\n"
4635 "518000 4: b4 11 00\n"
4636 "518000 4: b4 13 00\n"
4637 "518000 4: b4 15 00\n"
4638 "518000 4: b4 17 00\n"
4639 "518000 4: b4 19 00\n"
4640 "518000 4: b4 1b 00\n"
4641 "518000 4: b4 1d 00\n"
4642 "518000 4: b4 1f 00\n"
4643 "518000 4: b4 22 00\n"
4644 "518000 4: b4 24 00\n"
4645 "518000 4: b4 27 00\n"
4646 "518000 4: b4 29 00\n"
4647 "518000 4: b4 2b 7f\n"
4648 "518000 4: b4 2d 00\n"
4649 "518000 4: b4 2f 00\n"
4650 "518000 4: b4 31 00\n"
4651 "518000 4: b4 33 00\n"
4652 "518000 4: b4 35 00\n"
4653 "518000 4: b4 37 00\n"
4654 "518000 4: b4 39 00\n"
4655 "518000 4: b4 3b 00\n"
4656 "518000 4: b4 3d 00\n"
4657 "518000 4: b4 3f 00\n"
4658 "518000 4: b4 43 00\n"
4659 "518000 4: b4 50 00\n"
4660 "518000 4: b4 52 00\n"
4661 "518000 4: b4 54 00\n"
4662 "518000 4: b4 56 00\n"
4663 "518000 4: b4 58 00\n"
4664 "518000 4: b4 5a 00\n"
4665 "518000 4: b4 66 00\n"
4666 "518000 4: b4 68 00\n"
4667 "518000 4: b4 6a 00\n"
4668 "518000 4: b4 6c 00\n"
4669 "518000 4: b4 6e 00\n"
4670 "518000 4: b4 70 00\n"
4671 "518000 4: b4 72 00\n"
4672 "518000 4: b4 74 00\n"
4673 "518000 4: b4 76 00\n"
4674 "518000 4: b4 02 00\n"
4675 "518000 4: b4 04 00\n"
4676 "518000 4: b4 09 00\n"
4677 "518000 4: b4 0c 00\n"
4678 "518000 4: b4 0e 00\n"
4679 "518000 4: b4 10 00\n"
4680 "518000 4: b4 12 00\n"
4681 "518000 4: b4 14 00\n"
4682 "518000 4: b4 16 00\n"
4683 "518000 4: b4 18 00\n"
4684 "518000 4: b4 1a 00\n"
4685 "518000 4: b4 1c 00\n"
4686 "518000 4: b4 1e 00\n"
4687 "518000 4: b4 21 00\n"
4688 "518000 4: b4 23 00\n"
4689 "518000 4: b4 25 00\n"
4690 "518000 4: b4 28 00\n"
4691 "518000 4: b4 2a 00\n"
4692 "518000 4: b4 2c 00\n"
4693 "518000 4: b4 2e 00\n"
4694 "518000 4: b4 30 00\n"
4695 "518000 4: b4 32 00\n"
4696 "518000 4: b4 34 00\n"
4697 "518000 4: b4 36 00\n"
4698 "518000 4: b4 38 00\n"
4699 "518000 4: b4 3a 00\n"
4700 "518000 4: b4 3c 00\n"
4701 "518000 4: b4 3e 00\n"
4702 "518000 4: b4 41 00\n"
4703 "518000 4: b4 51 00\n"
4704 "518000 4: b4 53 00\n"
4705 "518000 4: b4 55 00\n"
4706 "518000 4: b4 57 00\n"
4707 "518000 4: b4 59 00\n"
4708 "518000 4: b4 62 7f\n"
4709 "518000 4: b4 63 7f\n"
4710 "518000 4: b4 64 7f\n"
4711 "518000 4: b4 65 7f\n"
4712 "518000 4: b4 67 00\n"
4713 "518000 4: b4 69 00\n"
4714 "518000 4: b4 6b 00\n"
4715 "518000 4: b4 6d 00\n"
4716 "518000 4: b4 6f 00\n"
4717 "518000 4: b4 71 00\n"
4718 "518000 4: b4 73 00\n"
4719 "518000 4: b4 75 00\n"
4720 "518000 4: b4 77 00\n"
4721 "519000 4: 84 40 4d\n"
4722 "520000 5: b5 00 25\n"
4723 "520000 5: b5 20 45\n"
4724 "520000 5: 95 40 4f\n"
4725 "521000 5: 85 40 4f\n"
4726 "522000 6: b6 00 25\n"
4727 "522000 6: b6 20 45\n"
4728 "522000 6: 96 40 4f\n"
4729 "523000 6: 86 40 4f\n"
4730 "524000 7: b7 00 25\n"
4731 "524000 7: b7 20 45\n"
4732 "524000 7: 97 40 4f\n"
4733 "525000 7: 87 40 4f\n"
4734 "526000 8: b8 00 25\n"
4735 "526000 8: b8 20 45\n"
4736 "526000 8: 98 40 4f\n"
4737 "527000 8: 88 40 4f\n"
4738 "528000 10: ba 00 25\n"
4739 "528000 10: ba 20 45\n"
4740 "528000 10: 9a 40 4f\n"
4741 "529000 10: 8a 40 4f\n"
4742 "531000 11: bb 00 25\n"
4743 "531000 11: bb 20 45\n"
4744 "531000 11: 9b 40 4f\n"
4745 "531000 11: 8b 40 4f\n"
4746 "532000 12: bc 00 25\n"
4747 "532000 12: bc 20 45\n"
4748 "532000 12: 9c 40 4f\n"
4749 "533000 12: 8c 40 4f\n"
4750 "534000 13: bd 00 25\n"
4751 "534000 13: bd 20 45\n"
4752 "534000 13: 9d 40 4f\n"
4753 "535000 13: 8d 40 4f\n"
4754 "536000 14: be 00 25\n"
4755 "536000 14: be 20 45\n"
4756 "536000 14: 9e 40 4f\n"
4757 "537000 14: 8e 40 4f\n"
4758 "538000 15: bf 00 25\n"
4759 "538000 15: bf 20 45\n"
4760 "538000 15: 9f 40 4f\n"
4761 "539000 15: 8f 40 4f\n"
4762 "540000 0: b0 00 25\n"
4763 "540000 0: b0 20 45\n"
4764 "540000 0: 90 40 4f\n"
4765 "541000 0: 80 40 4f\n"
4766 "542000 1: b1 00 25\n"
4767 "542000 1: b1 20 45\n"
4768 "542000 1: 91 40 4f\n"
4769 "543000 1: 81 40 4f\n"
4770 "544000 2: b2 00 25\n"
4771 "544000 2: b2 20 45\n"
4772 "544000 2: 92 40 4f\n"
4773 "545000 2: 82 40 40\n"
4774 "546000 ...closed.\n"
4775 ),__LINE__,(__FILE__)));
4776 
4777 }
mutabor::Route route
mutabor::InputDevice in
Definition: DevMidFTest.h:85
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ testGlobalPanic()

void CommonMidiInputTest::testGlobalPanic ( )

Definiert in Zeile 1059 der Datei midicmnTest.cpp.

Benutzt box, mutabor::OutputDeviceClass::Close(), mutabor::InputMidiFile::Close(), DEBUGLOG, DEFAULT_PANIC, in, mutabor::InputDeviceClass::NoteOff(), mutabor::InputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), mutabor::InputMidiFile::Open(), out, mutabor::Panic() und mutabor::str().

1060 {
1061  CPPUNIT_ASSERT( in );
1062  out->Open();
1063  box->Open();
1064  CPPUNIT_ASSERT( out->Check(("Opened...\n"
1065  " 0: e0 00 40\n"
1066  " 0: b0 7a 00\n"
1067  " 0: b0 7d 00\n"
1068  " 0: b0 7f 00\n"
1069  " 0: b0 65 00\n"
1070  " 0: b0 64 00\n"
1071  " 0: b0 06 02\n"
1072  " 0: b0 26 00\n"
1073  " 1: e1 00 40\n"
1074  " 1: b1 7a 00\n"
1075  " 1: b1 7d 00\n"
1076  " 1: b1 7f 00\n"
1077  " 1: b1 65 00\n"
1078  " 1: b1 64 00\n"
1079  " 1: b1 06 02\n"
1080  " 1: b1 26 00\n"
1081  " 2: e2 00 40\n"
1082  " 2: b2 7a 00\n"
1083  " 2: b2 7d 00\n"
1084  " 2: b2 7f 00\n"
1085  " 2: b2 65 00\n"
1086  " 2: b2 64 00\n"
1087  " 2: b2 06 02\n"
1088  " 2: b2 26 00\n"
1089  " 3: e3 00 40\n"
1090  " 3: b3 7a 00\n"
1091  " 3: b3 7d 00\n"
1092  " 3: b3 7f 00\n"
1093  " 3: b3 65 00\n"
1094  " 3: b3 64 00\n"
1095  " 3: b3 06 02\n"
1096  " 3: b3 26 00\n"
1097  " 4: e4 00 40\n"
1098  " 4: b4 7a 00\n"
1099  " 4: b4 7d 00\n"
1100  " 4: b4 7f 00\n"
1101  " 4: b4 65 00\n"
1102  " 4: b4 64 00\n"
1103  " 4: b4 06 02\n"
1104  " 4: b4 26 00\n"
1105  " 5: e5 00 40\n"
1106  " 5: b5 7a 00\n"
1107  " 5: b5 7d 00\n"
1108  " 5: b5 7f 00\n"
1109  " 5: b5 65 00\n"
1110  " 5: b5 64 00\n"
1111  " 5: b5 06 02\n"
1112  " 5: b5 26 00\n"
1113  " 6: e6 00 40\n"
1114  " 6: b6 7a 00\n"
1115  " 6: b6 7d 00\n"
1116  " 6: b6 7f 00\n"
1117  " 6: b6 65 00\n"
1118  " 6: b6 64 00\n"
1119  " 6: b6 06 02\n"
1120  " 6: b6 26 00\n"
1121  " 7: e7 00 40\n"
1122  " 7: b7 7a 00\n"
1123  " 7: b7 7d 00\n"
1124  " 7: b7 7f 00\n"
1125  " 7: b7 65 00\n"
1126  " 7: b7 64 00\n"
1127  " 7: b7 06 02\n"
1128  " 7: b7 26 00\n"
1129  " 8: e8 00 40\n"
1130  " 8: b8 7a 00\n"
1131  " 8: b8 7d 00\n"
1132  " 8: b8 7f 00\n"
1133  " 8: b8 65 00\n"
1134  " 8: b8 64 00\n"
1135  " 8: b8 06 02\n"
1136  " 8: b8 26 00\n"
1137  " 9: e9 00 40\n"
1138  " 9: b9 7a 00\n"
1139  " 9: b9 7d 00\n"
1140  " 9: b9 7f 00\n"
1141  " 9: b9 65 00\n"
1142  " 9: b9 64 00\n"
1143  " 9: b9 06 02\n"
1144  " 9: b9 26 00\n"
1145  " 10: ea 00 40\n"
1146  " 10: ba 7a 00\n"
1147  " 10: ba 7d 00\n"
1148  " 10: ba 7f 00\n"
1149  " 10: ba 65 00\n"
1150  " 10: ba 64 00\n"
1151  " 10: ba 06 02\n"
1152  " 10: ba 26 00\n"
1153  " 11: eb 00 40\n"
1154  " 11: bb 7a 00\n"
1155  " 11: bb 7d 00\n"
1156  " 11: bb 7f 00\n"
1157  " 11: bb 65 00\n"
1158  " 11: bb 64 00\n"
1159  " 11: bb 06 02\n"
1160  " 11: bb 26 00\n"
1161  " 12: ec 00 40\n"
1162  " 12: bc 7a 00\n"
1163  " 12: bc 7d 00\n"
1164  " 12: bc 7f 00\n"
1165  " 12: bc 65 00\n"
1166  " 12: bc 64 00\n"
1167  " 12: bc 06 02\n"
1168  " 12: bc 26 00\n"
1169  " 13: ed 00 40\n"
1170  " 13: bd 7a 00\n"
1171  " 13: bd 7d 00\n"
1172  " 13: bd 7f 00\n"
1173  " 13: bd 65 00\n"
1174  " 13: bd 64 00\n"
1175  " 13: bd 06 02\n"
1176  " 13: bd 26 00\n"
1177  " 14: ee 00 40\n"
1178  " 14: be 7a 00\n"
1179  " 14: be 7d 00\n"
1180  " 14: be 7f 00\n"
1181  " 14: be 65 00\n"
1182  " 14: be 64 00\n"
1183  " 14: be 06 02\n"
1184  " 14: be 26 00\n"
1185  " 15: ef 00 40\n"
1186  " 15: bf 7a 00\n"
1187  " 15: bf 7d 00\n"
1188  " 15: bf 7f 00\n"
1189  " 15: bf 65 00\n"
1190  " 15: bf 64 00\n"
1191  " 15: bf 06 02\n"
1192  " 15: bf 26 00\n"), __LINE__, (__FILE__)) );
1193  in->Open();
1194 
1195  /* check all permutations */
1196 
1197  DEBUGLOG (midiio, "123" );
1198 
1199  in->NoteOn(0,56,96);
1200  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
1201  in->NoteOn(0,60,97);
1202  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
1203  in->NoteOn(0,63,98);
1204  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
1205 
1206  in->NoteOff(0,56,53);
1207  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__) ) );
1208  in->NoteOff(0,60,54);
1209  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
1210  in->NoteOff(0,63,55);
1211  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__) ) );
1212 
1213  DEBUGLOG (midiio, "132" );
1214 
1215  in->NoteOn(0,56,96);
1216  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
1217  in->NoteOn(0,60,97);
1218  CPPUNIT_ASSERT( out->Check((" 4: 94 3c 61\n"), __LINE__, (__FILE__) ) );
1219  in->NoteOn(0,63,98);
1220  CPPUNIT_ASSERT( out->Check((" 5: 95 3f 62\n"), __LINE__, (__FILE__) ) );
1221 
1222  in->NoteOff(0,56,53);
1223  CPPUNIT_ASSERT( out->Check((" 3: 83 38 35\n"), __LINE__, (__FILE__) ) );
1224  in->NoteOff(0,63,55);
1225  CPPUNIT_ASSERT( out->Check((" 5: 85 3f 37\n"), __LINE__, (__FILE__) ) );
1226  in->NoteOff(0,60,54);
1227  CPPUNIT_ASSERT( out->Check((" 4: 84 3c 36\n"), __LINE__, (__FILE__) ) );
1228 
1229  DEBUGLOG (midiio, "213" );
1230 
1231  in->NoteOn(0,56,96);
1232  CPPUNIT_ASSERT( out->Check((" 6: 96 38 60\n"), __LINE__, (__FILE__) ) );
1233  in->NoteOn(0,60,97);
1234  CPPUNIT_ASSERT( out->Check((" 7: 97 3c 61\n"), __LINE__, (__FILE__) ) );
1235  in->NoteOn(0,63,98);
1236  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
1237 
1238  in->NoteOff(0,60,54);
1239  CPPUNIT_ASSERT( out->Check((" 7: 87 3c 36\n"), __LINE__, (__FILE__) ) );
1240  in->NoteOff(0,56,53);
1241  CPPUNIT_ASSERT( out->Check((" 6: 86 38 35\n"), __LINE__, (__FILE__) ) );
1242  in->NoteOff(0,63,55);
1243  CPPUNIT_ASSERT( out->Check((" 8: 88 3f 37\n"), __LINE__, (__FILE__) ) );
1244 
1245  DEBUGLOG (midiio, "231" );
1246 
1247  in->NoteOn(0,56,96);
1248  CPPUNIT_ASSERT( out->Check((" 10: 9a 38 60\n"), __LINE__, (__FILE__) ) );
1249  in->NoteOn(0,60,97);
1250  CPPUNIT_ASSERT( out->Check((" 11: 9b 3c 61\n"), __LINE__, (__FILE__) ) );
1251  in->NoteOn(0,63,98);
1252  CPPUNIT_ASSERT( out->Check((" 12: 9c 3f 62\n"), __LINE__, (__FILE__) ) );
1253 
1254  in->NoteOff(0,60,54);
1255  CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 36\n"), __LINE__, (__FILE__) ) );
1256  in->NoteOff(0,63,55);
1257  CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 37\n"), __LINE__, (__FILE__) ) );
1258  in->NoteOff(0,56,53);
1259  CPPUNIT_ASSERT( out->Check((" 10: 8a 38 35\n"), __LINE__, (__FILE__) ) );
1260 
1261  DEBUGLOG (midiio, "312" );
1262 
1263  in->NoteOn(0,56,96);
1264  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 60\n"), __LINE__, (__FILE__) ) );
1265  in->NoteOn(0,60,97);
1266  CPPUNIT_ASSERT( out->Check((" 14: 9e 3c 61\n"), __LINE__, (__FILE__) ) );
1267  in->NoteOn(0,63,98);
1268  CPPUNIT_ASSERT( out->Check((" 15: 9f 3f 62\n"), __LINE__, (__FILE__) ) );
1269 
1270  in->NoteOff(0,63,55);
1271  CPPUNIT_ASSERT( out->Check((" 15: 8f 3f 37\n"), __LINE__, (__FILE__) ) );
1272  // check sending note on with velocity = 0
1273  in->NoteOff(0,56,53);
1274  CPPUNIT_ASSERT( out->Check((" 13: 8d 38 35\n"), __LINE__, (__FILE__) ) );
1275  in->NoteOff(0,60,54);
1276  CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 36\n"), __LINE__, (__FILE__) ) );
1277 
1278  DEBUGLOG (midiio, "321" );
1279 
1280  // Add check for NULL as tone system parameter
1281  in->NoteOn(0,56,96);
1282  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
1283  in->NoteOn(0,60,97);
1284  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
1285  in->NoteOn(0,63,98);
1286  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
1287 
1288  in->NoteOff(0,63,55);
1289  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__) ) );
1290  in->NoteOff(0,60,54);
1291  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
1292  in->NoteOff(0,56,53);
1293  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__) ) );
1294 
1295  // now collect data
1296  DEBUGLOG (midiio, "123" );
1297  in->NoteOn(0,56,96);
1298  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
1299  in->NoteOn(0,60,97);
1300  CPPUNIT_ASSERT( out->Check((" 5: 95 3c 61\n"), __LINE__, (__FILE__) ) );
1301  in->NoteOn(0,63,98);
1302  CPPUNIT_ASSERT( out->Check((" 4: 94 3f 62\n"), __LINE__, (__FILE__) ) );
1303 
1304  DEBUGLOG (midiio, "132" );
1305 
1306  in->NoteOn(0,56,96);
1307  CPPUNIT_ASSERT( out->Check((" 7: 97 38 60\n"), __LINE__, (__FILE__) ) );
1308  in->NoteOn(0,60,97);
1309  CPPUNIT_ASSERT( out->Check((" 6: 96 3c 61\n"), __LINE__, (__FILE__) ) );
1310  in->NoteOn(0,63,98);
1311  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
1312 
1313  DEBUGLOG (midiio, "213" );
1314 
1315  in->NoteOn(0,56,96);
1316  CPPUNIT_ASSERT( out->Check((" 11: 9b 38 60\n"), __LINE__, (__FILE__) ) );
1317  in->NoteOn(0,60,97);
1318  CPPUNIT_ASSERT( out->Check((" 12: 9c 3c 61\n"), __LINE__, (__FILE__) ) );
1319  in->NoteOn(0,63,98);
1320  CPPUNIT_ASSERT( out->Check((" 10: 9a 3f 62\n"), __LINE__, (__FILE__) ) );
1321 
1322  DEBUGLOG (midiio, "231" );
1323 
1324  in->NoteOn(0,56,96);
1325  CPPUNIT_ASSERT( out->Check((" 15: 9f 38 60\n"), __LINE__, (__FILE__) ) );
1326  in->NoteOn(0,60,97);
1327  CPPUNIT_ASSERT( out->Check((" 13: 9d 3c 61\n"), __LINE__, (__FILE__) ) );
1328  in->NoteOn(0,63,98);
1329  CPPUNIT_ASSERT( out->Check((" 14: 9e 3f 62\n"), __LINE__, (__FILE__) ) );
1330 
1331  DEBUGLOG (midiio, "312" );
1332 
1333  in->NoteOn(0,56,96);
1334  CPPUNIT_ASSERT( out->Check((" 2: 92 38 60\n"), __LINE__, (__FILE__) ) );
1335  in->NoteOn(0,60,97);
1336  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
1337  in->NoteOn(0,63,98);
1338  CPPUNIT_ASSERT( out->Check((" 0: 90 3f 62\n"), __LINE__, (__FILE__) ) );
1339 
1340  DEBUGLOG (midiio, "321" );
1341 
1342  // Add check for NULL as tone system parameter
1343  in->NoteOn(0,56,96);
1344  CPPUNIT_ASSERT( out->Check((" 2: 82 38 40\n 2: 92 38 60\n"), __LINE__, (__FILE__) ) );
1345  in->NoteOn(0,60,97);
1346  CPPUNIT_ASSERT( out->Check((" 2: 82 38 40\n 2: 92 3c 61\n"), __LINE__, (__FILE__) ) );
1347  in->NoteOn(0,63,98);
1348  CPPUNIT_ASSERT( out->Check((" 3: 83 38 40\n 3: 93 3f 62\n"), __LINE__, (__FILE__) ) );
1349 
1350  in->NoteOff(0,56,53);
1351  CPPUNIT_ASSERT( out->Check((" 7: 87 38 35\n"), __LINE__, (__FILE__) ) );
1352  in->NoteOff(0,60,54);
1353  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
1354  in->NoteOff(0,63,55);
1355  CPPUNIT_ASSERT( out->Check((" 0: 80 3f 37\n"), __LINE__, (__FILE__) ) );
1356 
1358  CPPUNIT_ASSERT( out->unsortedCheck(("\
1359  2: b2 40 00\n\
1360  3: b3 40 00\n\
1361  4: b4 40 00\n\
1362  5: b5 40 00\n\
1363  6: b6 40 00\n\
1364  8: b8 40 00\n\
1365  10: ba 40 00\n\
1366  11: bb 40 00\n\
1367  12: bc 40 00\n\
1368  13: bd 40 00\n\
1369  14: be 40 00\n\
1370  15: bf 40 00\n\
1371  2: b2 42 00\n\
1372  3: b3 42 00\n\
1373  4: b4 42 00\n\
1374  5: b5 42 00\n\
1375  6: b6 42 00\n\
1376  8: b8 42 00\n\
1377  10: ba 42 00\n\
1378  11: bb 42 00\n\
1379  12: bc 42 00\n\
1380  13: bd 42 00\n\
1381  14: be 42 00\n\
1382  15: bf 42 00\n\
1383  2: b2 44 00\n\
1384  3: b3 44 00\n\
1385  4: b4 44 00\n\
1386  5: b5 44 00\n\
1387  6: b6 44 00\n\
1388  8: b8 44 00\n\
1389  10: ba 44 00\n\
1390  11: bb 44 00\n\
1391  12: bc 44 00\n\
1392  13: bd 44 00\n\
1393  14: be 44 00\n\
1394  15: bf 44 00\n\
1395  2: b2 45 00\n\
1396  3: b3 45 00\n\
1397  4: b4 45 00\n\
1398  5: b5 45 00\n\
1399  6: b6 45 00\n\
1400  8: b8 45 00\n\
1401  10: ba 45 00\n\
1402  11: bb 45 00\n\
1403  12: bc 45 00\n\
1404  13: bd 45 00\n\
1405  14: be 45 00\n\
1406  15: bf 45 00\n\
1407  3: 83 3f 62\n\
1408  4: 84 3f 62\n\
1409  8: 88 3f 62\n\
1410  10: 8a 3f 62\n\
1411  14: 8e 3f 62\n\
1412  2: 82 3c 61\n\
1413  5: 85 3c 61\n\
1414  6: 86 3c 61\n\
1415  12: 8c 3c 61\n\
1416  13: 8d 3c 61\n\
1417  11: 8b 38 60\n\
1418  15: 8f 38 60\n\
1419  0: b0 78 00\n\
1420  1: b1 78 00\n\
1421  2: b2 78 00\n\
1422  3: b3 78 00\n\
1423  4: b4 78 00\n\
1424  5: b5 78 00\n\
1425  6: b6 78 00\n\
1426  7: b7 78 00\n\
1427  8: b8 78 00\n\
1428  9: b9 78 00\n\
1429  10: ba 78 00\n\
1430  11: bb 78 00\n\
1431  12: bc 78 00\n\
1432  13: bd 78 00\n\
1433  14: be 78 00\n\
1434 "),
1435  __LINE__,
1436  (__FILE__) ) );
1437 
1438  in->NoteOff(0,56,53);
1439  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1440  in->NoteOff(0,63,55);
1441  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1442  in->NoteOff(0,60,54);
1443  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1444 
1445  in->NoteOff(0,60,54);
1446  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1447  in->NoteOff(0,56,53);
1448  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1449  in->NoteOff(0,63,55);
1450  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1451 
1452  in->NoteOff(0,60,54);
1453  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1454  in->NoteOff(0,63,55);
1455  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1456  in->NoteOff(0,56,53);
1457  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1458 
1459  in->NoteOff(0,63,55);
1460  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1461  // check sending note on with velocity = 0
1462  in->NoteOff(0,56,53);
1463  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1464  in->NoteOff(0,60,54);
1465  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1466 
1467  in->NoteOff(0,63,55);
1468  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1469  in->NoteOff(0,60,54);
1470  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1471  in->NoteOff(0,56,53);
1472  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1473 
1474  in->Close();
1475  out->Close();
1476  DEBUGLOG (midiio, "|%s|" ,str(out->getOut()));
1477  CPPUNIT_ASSERT( out->Check(("...closed.\n"), __LINE__, (__FILE__) ) );
1478 }
bool unsortedCheck(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.cpp:39
#define DEBUGLOG(level,...)
Definition: debug.h:294
std::string str(T obj)
Definition: Defs.h:131
midicmnInputDevice * in
Definition: midicmnTest.h:230
#define DEFAULT_PANIC
Definition: MidiKern.h:322
mutabor::DebugMidiOutputProvider & getOut()
Definition: midicmnTest.h:78
void Panic(int type)
Definition: Box.cpp:1092
midicmnOutputDevice * out
Definition: midicmnTest.h:229
void NoteOn(int channel, int inkey, int velocity)
Definition: midicmnTest.h:180
virtual void Close()
Definition: Device.h:1130
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void NoteOff(int channel, int inkey, int velocity)
Definition: midicmnTest.h:187
mutabor::Box box
Definition: midicmnTest.h:232

◆ testMoreNotesThanChannels()

void CommonMidiOutputTest::testMoreNotesThanChannels ( )

Definiert in Zeile 383 der Datei midicmnTest.cpp.

Benutzt box, cd, mutabor::OutputDeviceClass::Close(), DEBUGLOG, mutabor::OutputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), out und route.

384 {
385  CPPUNIT_ASSERT( out );
386  out->Open();
387  box->Open();
388  CPPUNIT_ASSERT( out->Check(("Opened...\n"
389  " 0: e0 00 40\n"
390  " 0: b0 7a 00\n"
391  " 0: b0 7d 00\n"
392  " 0: b0 7f 00\n"
393  " 0: b0 65 00\n"
394  " 0: b0 64 00\n"
395  " 0: b0 06 02\n"
396  " 0: b0 26 00\n"
397  " 1: e1 00 40\n"
398  " 1: b1 7a 00\n"
399  " 1: b1 7d 00\n"
400  " 1: b1 7f 00\n"
401  " 1: b1 65 00\n"
402  " 1: b1 64 00\n"
403  " 1: b1 06 02\n"
404  " 1: b1 26 00\n"
405  " 2: e2 00 40\n"
406  " 2: b2 7a 00\n"
407  " 2: b2 7d 00\n"
408  " 2: b2 7f 00\n"
409  " 2: b2 65 00\n"
410  " 2: b2 64 00\n"
411  " 2: b2 06 02\n"
412  " 2: b2 26 00\n"
413  " 3: e3 00 40\n"
414  " 3: b3 7a 00\n"
415  " 3: b3 7d 00\n"
416  " 3: b3 7f 00\n"
417  " 3: b3 65 00\n"
418  " 3: b3 64 00\n"
419  " 3: b3 06 02\n"
420  " 3: b3 26 00\n"
421  " 4: e4 00 40\n"
422  " 4: b4 7a 00\n"
423  " 4: b4 7d 00\n"
424  " 4: b4 7f 00\n"
425  " 4: b4 65 00\n"
426  " 4: b4 64 00\n"
427  " 4: b4 06 02\n"
428  " 4: b4 26 00\n"
429  " 5: e5 00 40\n"
430  " 5: b5 7a 00\n"
431  " 5: b5 7d 00\n"
432  " 5: b5 7f 00\n"
433  " 5: b5 65 00\n"
434  " 5: b5 64 00\n"
435  " 5: b5 06 02\n"
436  " 5: b5 26 00\n"
437  " 6: e6 00 40\n"
438  " 6: b6 7a 00\n"
439  " 6: b6 7d 00\n"
440  " 6: b6 7f 00\n"
441  " 6: b6 65 00\n"
442  " 6: b6 64 00\n"
443  " 6: b6 06 02\n"
444  " 6: b6 26 00\n"
445  " 7: e7 00 40\n"
446  " 7: b7 7a 00\n"
447  " 7: b7 7d 00\n"
448  " 7: b7 7f 00\n"
449  " 7: b7 65 00\n"
450  " 7: b7 64 00\n"
451  " 7: b7 06 02\n"
452  " 7: b7 26 00\n"
453  " 8: e8 00 40\n"
454  " 8: b8 7a 00\n"
455  " 8: b8 7d 00\n"
456  " 8: b8 7f 00\n"
457  " 8: b8 65 00\n"
458  " 8: b8 64 00\n"
459  " 8: b8 06 02\n"
460  " 8: b8 26 00\n"
461  " 9: e9 00 40\n"
462  " 9: b9 7a 00\n"
463  " 9: b9 7d 00\n"
464  " 9: b9 7f 00\n"
465  " 9: b9 65 00\n"
466  " 9: b9 64 00\n"
467  " 9: b9 06 02\n"
468  " 9: b9 26 00\n"
469  " 10: ea 00 40\n"
470  " 10: ba 7a 00\n"
471  " 10: ba 7d 00\n"
472  " 10: ba 7f 00\n"
473  " 10: ba 65 00\n"
474  " 10: ba 64 00\n"
475  " 10: ba 06 02\n"
476  " 10: ba 26 00\n"
477  " 11: eb 00 40\n"
478  " 11: bb 7a 00\n"
479  " 11: bb 7d 00\n"
480  " 11: bb 7f 00\n"
481  " 11: bb 65 00\n"
482  " 11: bb 64 00\n"
483  " 11: bb 06 02\n"
484  " 11: bb 26 00\n"
485  " 12: ec 00 40\n"
486  " 12: bc 7a 00\n"
487  " 12: bc 7d 00\n"
488  " 12: bc 7f 00\n"
489  " 12: bc 65 00\n"
490  " 12: bc 64 00\n"
491  " 12: bc 06 02\n"
492  " 12: bc 26 00\n"
493  " 13: ed 00 40\n"
494  " 13: bd 7a 00\n"
495  " 13: bd 7d 00\n"
496  " 13: bd 7f 00\n"
497  " 13: bd 65 00\n"
498  " 13: bd 64 00\n"
499  " 13: bd 06 02\n"
500  " 13: bd 26 00\n"
501  " 14: ee 00 40\n"
502  " 14: be 7a 00\n"
503  " 14: be 7d 00\n"
504  " 14: be 7f 00\n"
505  " 14: be 65 00\n"
506  " 14: be 64 00\n"
507  " 14: be 06 02\n"
508  " 14: be 26 00\n"
509  " 15: ef 00 40\n"
510  " 15: bf 7a 00\n"
511  " 15: bf 7d 00\n"
512  " 15: bf 7f 00\n"
513  " 15: bf 65 00\n"
514  " 15: bf 64 00\n"
515  " 15: bf 06 02\n"
516  " 15: bf 26 00\n"), __LINE__, (__FILE__)) );
517 
518  /* check all permutations */
519 
520  DEBUGLOG (midiio, "123" );
521 
522  out->NoteOn(box,56,96,route.get(),0,cd);
523  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__)) );
524  out->NoteOn(box,60,97,route.get(),0,cd);
525  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__)) );
526  out->NoteOn(box,63,98,route.get(),0,cd);
527  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__)) );
528 
529  out->NoteOn(box,56,96,route.get(),0,cd);
530  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__)) );
531  out->NoteOn(box,60,97,route.get(),0,cd);
532  CPPUNIT_ASSERT( out->Check((" 4: 94 3c 61\n"), __LINE__, (__FILE__)) );
533  out->NoteOn(box,63,98,route.get(),0,cd);
534  CPPUNIT_ASSERT( out->Check((" 5: 95 3f 62\n"), __LINE__, (__FILE__)) );
535 
536  out->NoteOn(box,56,96,route.get(),0,cd);
537  CPPUNIT_ASSERT( out->Check((" 6: 96 38 60\n"), __LINE__, (__FILE__)) );
538  out->NoteOn(box,60,97,route.get(),0,cd);
539  CPPUNIT_ASSERT( out->Check((" 7: 97 3c 61\n"), __LINE__, (__FILE__)) );
540  out->NoteOn(box,63,98,route.get(),0,cd);
541  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__)) );
542 
543  out->NoteOn(box,56,96,route.get(),0,cd);
544  CPPUNIT_ASSERT( out->Check((" 10: 9a 38 60\n"), __LINE__, (__FILE__)) );
545  out->NoteOn(box,60,97,route.get(),0,cd);
546  CPPUNIT_ASSERT( out->Check((" 11: 9b 3c 61\n"), __LINE__, (__FILE__)) );
547  out->NoteOn(box,63,98,route.get(),0,cd);
548  CPPUNIT_ASSERT( out->Check((" 12: 9c 3f 62\n"), __LINE__, (__FILE__)) );
549 
550  out->NoteOn(box,56,96,route.get(),0,cd);
551  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 60\n"), __LINE__, (__FILE__)) );
552  out->NoteOn(box,60,97,route.get(),0,cd);
553  CPPUNIT_ASSERT( out->Check((" 14: 9e 3c 61\n"), __LINE__, (__FILE__)) );
554  out->NoteOn(box,63,98,route.get(),0,cd);
555  CPPUNIT_ASSERT( out->Check((" 15: 9f 3f 62\n"), __LINE__, (__FILE__)) );
556 
557 
558  out->NoteOn(box,64,99,route.get(),0,cd);
559  CPPUNIT_ASSERT( out->Check((" 0: 80 38 40\n 0: 90 40 63\n"), __LINE__, (__FILE__)) );
560  out->NoteOn(box,65,100,route.get(),0,cd);
561  CPPUNIT_ASSERT( out->Check((" 3: 83 38 40\n 3: 93 41 64\n"), __LINE__, (__FILE__)) );
562  out->NoteOn(box,66,101,route.get(),0,cd);
563  CPPUNIT_ASSERT( out->Check((" 6: 86 38 40\n 6: 96 42 65\n"), __LINE__, (__FILE__)) );
564 
565  out->NoteOn(box,67,102,route.get(),0,cd);
566  CPPUNIT_ASSERT( out->Check((" 10: 8a 38 40\n 10: 9a 43 66\n"), __LINE__, (__FILE__)) );
567  out->NoteOn(box,68,103,route.get(),0,cd);
568  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 40\n 1: 91 44 67\n"), __LINE__, (__FILE__)) );
569  out->NoteOn(box,69,104,route.get(),0,cd);
570  CPPUNIT_ASSERT( out->Check((" 4: 84 3c 40\n 4: 94 45 68\n"), __LINE__, (__FILE__)) );
571 
572  out->NoteOn(box,70,105,route.get(),0,cd);
573  CPPUNIT_ASSERT( out->Check((" 7: 87 3c 40\n 7: 97 46 69\n"), __LINE__, (__FILE__)) );
574  out->NoteOn(box,71,106,route.get(),0,cd);
575  CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 40\n 11: 9b 47 6a\n"), __LINE__, (__FILE__)) );
576  out->NoteOn(box,72,107,route.get(),0,cd);
577  CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 40\n 14: 9e 48 6b\n"), __LINE__, (__FILE__)) );
578 
579  out->NoteOn(box,73,108,route.get(),0,cd);
580  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 40\n 2: 92 49 6c\n"), __LINE__, (__FILE__)) );
581  out->NoteOn(box,74,109,route.get(),0,cd);
582  CPPUNIT_ASSERT( out->Check((" 5: 85 3f 40\n 5: 95 4a 6d\n"), __LINE__, (__FILE__)) );
583  out->NoteOn(box,75,110,route.get(),0,cd);
584  CPPUNIT_ASSERT( out->Check((" 8: 88 3f 40\n 8: 98 4b 6e\n"), __LINE__, (__FILE__)) );
585 
586  out->NoteOn(box,76,111,route.get(),0,cd);
587  CPPUNIT_ASSERT( out->Check((" 0: 80 40 40\n 0: 90 4c 6f\n"), __LINE__, (__FILE__)) );
588  out->NoteOn(box,77,112,route.get(),0,cd);
589  CPPUNIT_ASSERT( out->Check((" 3: 83 41 40\n 3: 93 4d 70\n"), __LINE__, (__FILE__)) );
590  out->NoteOn(box,78,113,route.get(),0,cd);
591  CPPUNIT_ASSERT( out->Check((" 6: 86 42 40\n 6: 96 4e 71\n"), __LINE__, (__FILE__)) );
592 
593  out->Close();
594  CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 40\n 13: 8d 38 40\n 15: 8f 3f 40\n 10: 8a 43 40\n 1: 81 44 40\n 4: 84 45 40\n 7: 87 46 40\n 11: 8b 47 40\n 14: 8e 48 40\n 2: 82 49 40\n 5: 85 4a 40\n 8: 88 4b 40\n 0: 80 4c 40\n 3: 83 4d 40\n 6: 86 4e 40\n...closed.\n"), __LINE__, (__FILE__)) );
595 }
#define DEBUGLOG(level,...)
Definition: debug.h:294
mutabor::Route route
Definition: midicmnTest.h:140
midicmnOutputDevice * out
Definition: midicmnTest.h:139
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
mutabor::Box box
Definition: midicmnTest.h:141
mutabor::ChannelData cd
Definition: midicmnTest.h:142
void NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
Definition: Device.h:852

◆ testNoteOnOff() [1/2]

void CommonMidiOutputTest::testNoteOnOff ( )

Definiert in Zeile 137 der Datei midicmnTest.cpp.

Benutzt box, cd, mutabor::OutputDeviceClass::Close(), DEBUGLOG, mutabor::OutputDeviceClass::NoteOff(), mutabor::OutputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), out, route und mutabor::str().

138 {
139  CPPUNIT_ASSERT( out );
140  CPPUNIT_ASSERT(out->Open());
141  if (!box->Compile(NULL, "")) {
142  CPPUNIT_FAIL(box->get_errors());
143  }
144  CPPUNIT_ASSERT(box->Open());
145  CPPUNIT_ASSERT( out->Check(("Opened...\n"
146  " 0: e0 00 40\n"
147  " 0: b0 7a 00\n"
148  " 0: b0 7d 00\n"
149  " 0: b0 7f 00\n"
150  " 0: b0 65 00\n"
151  " 0: b0 64 00\n"
152  " 0: b0 06 02\n"
153  " 0: b0 26 00\n"
154  " 1: e1 00 40\n"
155  " 1: b1 7a 00\n"
156  " 1: b1 7d 00\n"
157  " 1: b1 7f 00\n"
158  " 1: b1 65 00\n"
159  " 1: b1 64 00\n"
160  " 1: b1 06 02\n"
161  " 1: b1 26 00\n"
162  " 2: e2 00 40\n"
163  " 2: b2 7a 00\n"
164  " 2: b2 7d 00\n"
165  " 2: b2 7f 00\n"
166  " 2: b2 65 00\n"
167  " 2: b2 64 00\n"
168  " 2: b2 06 02\n"
169  " 2: b2 26 00\n"
170  " 3: e3 00 40\n"
171  " 3: b3 7a 00\n"
172  " 3: b3 7d 00\n"
173  " 3: b3 7f 00\n"
174  " 3: b3 65 00\n"
175  " 3: b3 64 00\n"
176  " 3: b3 06 02\n"
177  " 3: b3 26 00\n"
178  " 4: e4 00 40\n"
179  " 4: b4 7a 00\n"
180  " 4: b4 7d 00\n"
181  " 4: b4 7f 00\n"
182  " 4: b4 65 00\n"
183  " 4: b4 64 00\n"
184  " 4: b4 06 02\n"
185  " 4: b4 26 00\n"
186  " 5: e5 00 40\n"
187  " 5: b5 7a 00\n"
188  " 5: b5 7d 00\n"
189  " 5: b5 7f 00\n"
190  " 5: b5 65 00\n"
191  " 5: b5 64 00\n"
192  " 5: b5 06 02\n"
193  " 5: b5 26 00\n"
194  " 6: e6 00 40\n"
195  " 6: b6 7a 00\n"
196  " 6: b6 7d 00\n"
197  " 6: b6 7f 00\n"
198  " 6: b6 65 00\n"
199  " 6: b6 64 00\n"
200  " 6: b6 06 02\n"
201  " 6: b6 26 00\n"
202  " 7: e7 00 40\n"
203  " 7: b7 7a 00\n"
204  " 7: b7 7d 00\n"
205  " 7: b7 7f 00\n"
206  " 7: b7 65 00\n"
207  " 7: b7 64 00\n"
208  " 7: b7 06 02\n"
209  " 7: b7 26 00\n"
210  " 8: e8 00 40\n"
211  " 8: b8 7a 00\n"
212  " 8: b8 7d 00\n"
213  " 8: b8 7f 00\n"
214  " 8: b8 65 00\n"
215  " 8: b8 64 00\n"
216  " 8: b8 06 02\n"
217  " 8: b8 26 00\n"
218  " 9: e9 00 40\n"
219  " 9: b9 7a 00\n"
220  " 9: b9 7d 00\n"
221  " 9: b9 7f 00\n"
222  " 9: b9 65 00\n"
223  " 9: b9 64 00\n"
224  " 9: b9 06 02\n"
225  " 9: b9 26 00\n"
226  " 10: ea 00 40\n"
227  " 10: ba 7a 00\n"
228  " 10: ba 7d 00\n"
229  " 10: ba 7f 00\n"
230  " 10: ba 65 00\n"
231  " 10: ba 64 00\n"
232  " 10: ba 06 02\n"
233  " 10: ba 26 00\n"
234  " 11: eb 00 40\n"
235  " 11: bb 7a 00\n"
236  " 11: bb 7d 00\n"
237  " 11: bb 7f 00\n"
238  " 11: bb 65 00\n"
239  " 11: bb 64 00\n"
240  " 11: bb 06 02\n"
241  " 11: bb 26 00\n"
242  " 12: ec 00 40\n"
243  " 12: bc 7a 00\n"
244  " 12: bc 7d 00\n"
245  " 12: bc 7f 00\n"
246  " 12: bc 65 00\n"
247  " 12: bc 64 00\n"
248  " 12: bc 06 02\n"
249  " 12: bc 26 00\n"
250  " 13: ed 00 40\n"
251  " 13: bd 7a 00\n"
252  " 13: bd 7d 00\n"
253  " 13: bd 7f 00\n"
254  " 13: bd 65 00\n"
255  " 13: bd 64 00\n"
256  " 13: bd 06 02\n"
257  " 13: bd 26 00\n"
258  " 14: ee 00 40\n"
259  " 14: be 7a 00\n"
260  " 14: be 7d 00\n"
261  " 14: be 7f 00\n"
262  " 14: be 65 00\n"
263  " 14: be 64 00\n"
264  " 14: be 06 02\n"
265  " 14: be 26 00\n"
266  " 15: ef 00 40\n"
267  " 15: bf 7a 00\n"
268  " 15: bf 7d 00\n"
269  " 15: bf 7f 00\n"
270  " 15: bf 65 00\n"
271  " 15: bf 64 00\n"
272  " 15: bf 06 02\n"
273  " 15: bf 26 00\n"), __LINE__, (__FILE__)) );
274 
275  /* check all permutations */
276 
277  DEBUGLOG (midiio, "123" );
278 
279  out->NoteOn(box,56,96,route.get(),0,cd);
280  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
281  out->NoteOn(box,60,97,route.get(),0,cd);
282  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
283  out->NoteOn(box,63,98,route.get(),0,cd);
284  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
285 
286  out->NoteOff(box,56,53,route.get(),0,false);
287  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__)) );
288  out->NoteOff(box,60,54,route.get(),0,false);
289  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__)) );
290  out->NoteOff(box,63,55,route.get(),0,false);
291  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__)) );
292 
293  DEBUGLOG (midiio, "132" );
294 
295  out->NoteOn(box,56,96,route.get(),0,cd);
296  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
297  out->NoteOn(box,60,97,route.get(),0,cd);
298  CPPUNIT_ASSERT( out->Check((" 4: 94 3c 61\n"), __LINE__, (__FILE__) ) );
299  out->NoteOn(box,63,98,route.get(),0,cd);
300  CPPUNIT_ASSERT( out->Check((" 5: 95 3f 62\n"), __LINE__, (__FILE__) ) );
301 
302  out->NoteOff(box,56,53,route.get(),0,false);
303  CPPUNIT_ASSERT( out->Check((" 3: 83 38 35\n"), __LINE__, (__FILE__)) );
304  out->NoteOff(box,63,55,route.get(),0,false);
305  CPPUNIT_ASSERT( out->Check((" 5: 85 3f 37\n"), __LINE__, (__FILE__)) );
306  out->NoteOff(box,60,54,route.get(),0,false);
307  CPPUNIT_ASSERT( out->Check((" 4: 84 3c 36\n"), __LINE__, (__FILE__)) );
308 
309  DEBUGLOG (midiio, "213" );
310 
311  out->NoteOn(box,56,96,route.get(),0,cd);
312  CPPUNIT_ASSERT( out->Check((" 6: 96 38 60\n"), __LINE__, (__FILE__) ) );
313  out->NoteOn(box,60,97,route.get(),0,cd);
314  CPPUNIT_ASSERT( out->Check((" 7: 97 3c 61\n"), __LINE__, (__FILE__) ) );
315  out->NoteOn(box,63,98,route.get(),0,cd);
316  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
317 
318  out->NoteOff(box,60,54,route.get(),0,false);
319  CPPUNIT_ASSERT( out->Check((" 7: 87 3c 36\n"), __LINE__, (__FILE__)) );
320  out->NoteOff(box,56,53,route.get(),0,false);
321  CPPUNIT_ASSERT( out->Check((" 6: 86 38 35\n"), __LINE__, (__FILE__)) );
322  out->NoteOff(box,63,55,route.get(),0,false);
323  CPPUNIT_ASSERT( out->Check((" 8: 88 3f 37\n"), __LINE__, (__FILE__)) );
324 
325  DEBUGLOG (midiio, "231" );
326 
327  out->NoteOn(box,56,96,route.get(),0,cd);
328  CPPUNIT_ASSERT( out->Check((" 10: 9a 38 60\n"), __LINE__, (__FILE__) ) );
329  out->NoteOn(box,60,97,route.get(),0,cd);
330  CPPUNIT_ASSERT( out->Check((" 11: 9b 3c 61\n"), __LINE__, (__FILE__) ) );
331  out->NoteOn(box,63,98,route.get(),0,cd);
332  CPPUNIT_ASSERT( out->Check((" 12: 9c 3f 62\n"), __LINE__, (__FILE__) ) );
333 
334  out->NoteOff(box,60,54,route.get(),0,false);
335  CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 36\n"), __LINE__, (__FILE__)) );
336  out->NoteOff(box,63,55,route.get(),0,false);
337  CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 37\n"), __LINE__, (__FILE__)) );
338  out->NoteOff(box,56,53,route.get(),0,false);
339  CPPUNIT_ASSERT( out->Check((" 10: 8a 38 35\n"), __LINE__, (__FILE__)) );
340 
341  DEBUGLOG (midiio, "312" );
342 
343  out->NoteOn(box,56,96,route.get(),0,cd);
344  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 60\n"), __LINE__, (__FILE__) ) );
345  out->NoteOn(box,60,97,route.get(),0,cd);
346  CPPUNIT_ASSERT( out->Check((" 14: 9e 3c 61\n"), __LINE__, (__FILE__) ) );
347  out->NoteOn(box,63,98,route.get(),0,cd);
348  CPPUNIT_ASSERT( out->Check((" 15: 9f 3f 62\n"), __LINE__, (__FILE__) ) );
349 
350  out->NoteOff(box,63,55,route.get(),0,false);
351  CPPUNIT_ASSERT( out->Check((" 15: 8f 3f 37\n"), __LINE__, (__FILE__)) );
352  // check sending note on with velocity = 0
353  out->NoteOff(box,56,53,route.get(),0,true);
354  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 00\n"), __LINE__, (__FILE__)) );
355  out->NoteOff(box,60,54,route.get(),0,false);
356  CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 36\n"), __LINE__, (__FILE__)) );
357 
358  DEBUGLOG (midiio, "321" );
359 
360  // Add check for NULL as tone system parameter
361  out->NoteOn(NULL,56,96,route.get(),0,cd);
362  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
363  out->NoteOn(NULL,60,97,route.get(),0,cd);
364  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
365  out->NoteOn(NULL,63,98,route.get(),0,cd);
366  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
367 
368  out->NoteOff(NULL,63,55,route.get(),0,false);
369  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__)) );
370  out->NoteOff(NULL,60,54,route.get(),0,false);
371  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__)) );
372  out->NoteOff(NULL,56,53,route.get(),0,false);
373  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__)) );
374 
375 
376 
377 
378  out->Close();
379  DEBUGLOG (midiio, "|%s|" , str(out->getOut()));
380  CPPUNIT_ASSERT( out->Check(("...closed.\n")) );
381 }
#define DEBUGLOG(level,...)
Definition: debug.h:294
std::string str(T obj)
Definition: Defs.h:131
void NoteOff(Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)
Definition: Device.h:862
mutabor::Route route
Definition: midicmnTest.h:140
mutabor::DebugMidiOutputProvider & getOut()
Definition: midicmnTest.h:78
midicmnOutputDevice * out
Definition: midicmnTest.h:139
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
mutabor::Box box
Definition: midicmnTest.h:141
mutabor::ChannelData cd
Definition: midicmnTest.h:142
void NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
Definition: Device.h:852

◆ testNoteOnOff() [2/2]

void OutputMidiFileTest::testNoteOnOff ( )

Definiert in Zeile 4875 der Datei DevMidFTest.cpp.

Benutzt box, cd, mutabor::OutputDeviceClass::Close(), DEBUGLOG, mutabor::OutputDeviceClass::NoteOff(), mutabor::OutputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), out und route.

4876 {
4877  CPPUNIT_ASSERT( out );
4878  out->Open();
4879 /*
4880  CPPUNIT_ASSERT( out->Check(("Opened...\n"
4881  " 0: e0 00 40\n"
4882  " 0: b0 7a 00\n"
4883  " 0: b0 7d 00\n"
4884  " 0: b0 7f 00\n"
4885  " 1: e1 00 40\n"
4886  " 1: b1 7a 00\n"
4887  " 1: b1 7d 00\n"
4888  " 1: b1 7f 00\n"
4889  " 2: e2 00 40\n"
4890  " 2: b2 7a 00\n"
4891  " 2: b2 7d 00\n"
4892  " 2: b2 7f 00\n"
4893  " 3: e3 00 40\n"
4894  " 3: b3 7a 00\n"
4895  " 3: b3 7d 00\n"
4896  " 3: b3 7f 00\n"
4897  " 4: e4 00 40\n"
4898  " 4: b4 7a 00\n"
4899  " 4: b4 7d 00\n"
4900  " 4: b4 7f 00\n"
4901  " 5: e5 00 40\n"
4902  " 5: b5 7a 00\n"
4903  " 5: b5 7d 00\n"
4904  " 5: b5 7f 00\n"
4905  " 6: e6 00 40\n"
4906  " 6: b6 7a 00\n"
4907  " 6: b6 7d 00\n"
4908  " 6: b6 7f 00\n"
4909  " 7: e7 00 40\n"
4910  " 7: b7 7a 00\n"
4911  " 7: b7 7d 00\n"
4912  " 7: b7 7f 00\n"
4913  " 8: e8 00 40\n"
4914  " 8: b8 7a 00\n"
4915  " 8: b8 7d 00\n"
4916  " 8: b8 7f 00\n"
4917  " 9: e9 00 40\n"
4918  " 9: b9 7a 00\n"
4919  " 9: b9 7d 00\n"
4920  " 9: b9 7f 00\n"
4921  " 10: ea 00 40\n"
4922  " 10: ba 7a 00\n"
4923  " 10: ba 7d 00\n"
4924  " 10: ba 7f 00\n"
4925  " 11: eb 00 40\n"
4926  " 11: bb 7a 00\n"
4927  " 11: bb 7d 00\n"
4928  " 11: bb 7f 00\n"
4929  " 12: ec 00 40\n"
4930  " 12: bc 7a 00\n"
4931  " 12: bc 7d 00\n"
4932  " 12: bc 7f 00\n"
4933  " 13: ed 00 40\n"
4934  " 13: bd 7a 00\n"
4935  " 13: bd 7d 00\n"
4936  " 13: bd 7f 00\n"
4937  " 14: ee 00 40\n"
4938  " 14: be 7a 00\n"
4939  " 14: be 7d 00\n"
4940  " 14: be 7f 00\n"
4941  " 15: ef 00 40\n"
4942  " 15: bf 7a 00\n"
4943  " 15: bf 7d 00\n"
4944  " 15: bf 7f 00\n")) );
4945 */
4946  /* check all permutations */
4947 
4948  DEBUGLOG (midiio, "123" );
4949 
4950  out->NoteOn(box,56,96,route.get(),0,cd);
4951 // CPPUNIT_ASSERT( out->Check((" 0: b0 40 00\n 0: 90 38 60\n") ) );
4952  out->NoteOn(box,60,97,route.get(),0,cd);
4953 // CPPUNIT_ASSERT( out->Check((" 1: b1 40 00\n 1: 91 3c 61\n") ) );
4954  out->NoteOn(box,63,98,route.get(),0,cd);
4955 // CPPUNIT_ASSERT( out->Check((" 2: b2 40 00\n 2: 92 3f 62\n") ) );
4956 
4957  usleep(200000);
4958  out->NoteOff(box,56,53,route.get(),0,false);
4959 // CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n")) );
4960  out->NoteOff(box,60,54,route.get(),0,false);
4961 // CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n")) );
4962  out->NoteOff(box,63,55,route.get(),0,false);
4963 // CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n")) );
4964 
4965  usleep(200000);
4966  DEBUGLOG (midiio, "132" );
4967 
4968  out->NoteOn(box,56,96,route.get(),0,cd);
4969 // CPPUNIT_ASSERT( out->Check((" 3: b3 40 00\n 3: 93 38 60\n") ) );
4970  out->NoteOn(box,60,97,route.get(),0,cd);
4971 // CPPUNIT_ASSERT( out->Check((" 4: b4 40 00\n 4: 94 3c 61\n") ) );
4972  out->NoteOn(box,63,98,route.get(),0,cd);
4973 // CPPUNIT_ASSERT( out->Check((" 5: b5 40 00\n 5: 95 3f 62\n") ) );
4974 
4975  usleep(200000);
4976  out->NoteOff(box,56,53,route.get(),0,false);
4977 // CPPUNIT_ASSERT( out->Check((" 3: 83 38 35\n")) );
4978  out->NoteOff(box,63,55,route.get(),0,false);
4979 // CPPUNIT_ASSERT( out->Check((" 5: 85 3f 37\n")) );
4980  out->NoteOff(box,60,54,route.get(),0,false);
4981 // CPPUNIT_ASSERT( out->Check((" 4: 84 3c 36\n")) );
4982 
4983  DEBUGLOG (midiio, "213" );
4984 
4985  usleep(200000);
4986  out->NoteOn(box,56,96,route.get(),0,cd);
4987 // CPPUNIT_ASSERT( out->Check((" 6: b6 40 00\n 6: 96 38 60\n") ) );
4988  out->NoteOn(box,60,97,route.get(),0,cd);
4989 // CPPUNIT_ASSERT( out->Check((" 7: b7 40 00\n 7: 97 3c 61\n") ) );
4990  out->NoteOn(box,63,98,route.get(),0,cd);
4991 // CPPUNIT_ASSERT( out->Check((" 8: b8 40 00\n 8: 98 3f 62\n") ) );
4992 
4993  out->NoteOff(box,60,54,route.get(),0,false);
4994 // CPPUNIT_ASSERT( out->Check((" 7: 87 3c 36\n")) );
4995  out->NoteOff(box,56,53,route.get(),0,false);
4996 // CPPUNIT_ASSERT( out->Check((" 6: 86 38 35\n")) );
4997  out->NoteOff(box,63,55,route.get(),0,false);
4998 // CPPUNIT_ASSERT( out->Check((" 8: 88 3f 37\n")) );
4999 
5000  usleep(200000);
5001  DEBUGLOG (midiio, "231" );
5002 
5003  out->NoteOn(box,56,96,route.get(),0,cd);
5004 // CPPUNIT_ASSERT( out->Check((" 10: ba 40 00\n 10: 9a 38 60\n") ) );
5005  out->NoteOn(box,60,97,route.get(),0,cd);
5006 // CPPUNIT_ASSERT( out->Check((" 11: bb 40 00\n 11: 9b 3c 61\n") ) );
5007  out->NoteOn(box,63,98,route.get(),0,cd);
5008 // CPPUNIT_ASSERT( out->Check((" 12: bc 40 00\n 12: 9c 3f 62\n") ) );
5009 
5010  usleep(200000);
5011  out->NoteOff(box,60,54,route.get(),0,false);
5012 // CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 36\n")) );
5013  out->NoteOff(box,63,55,route.get(),0,false);
5014 // CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 37\n")) );
5015  out->NoteOff(box,56,53,route.get(),0,false);
5016 // CPPUNIT_ASSERT( out->Check((" 10: 8a 38 35\n")) );
5017 
5018  usleep(200000);
5019  DEBUGLOG (midiio, "312" );
5020 
5021  out->NoteOn(box,56,96,route.get(),0,cd);
5022 // CPPUNIT_ASSERT( out->Check((" 13: bd 40 00\n 13: 9d 38 60\n") ) );
5023  out->NoteOn(box,60,97,route.get(),0,cd);
5024 // CPPUNIT_ASSERT( out->Check((" 14: be 40 00\n 14: 9e 3c 61\n") ) );
5025  out->NoteOn(box,63,98,route.get(),0,cd);
5026 // CPPUNIT_ASSERT( out->Check((" 15: bf 40 00\n 15: 9f 3f 62\n") ) );
5027 
5028  usleep(200000);
5029  out->NoteOff(box,63,55,route.get(),0,false);
5030 // CPPUNIT_ASSERT( out->Check((" 15: 8f 3f 37\n")) );
5031  // check sending note on with velocity = 0
5032  out->NoteOff(box,56,53,route.get(),0,true);
5033 // CPPUNIT_ASSERT( out->Check((" 13: 9d 38 00\n")) );
5034  out->NoteOff(box,60,54,route.get(),0,false);
5035 // CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 36\n")) );
5036 
5037  usleep(200000);
5038  DEBUGLOG (midiio, "321" );
5039 
5040  // Add check for NULL as tone system parameter
5041  out->NoteOn(NULL,56,96,route.get(),0,cd);
5042 // CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n") ) );
5043  out->NoteOn(NULL,60,97,route.get(),0,cd);
5044 // CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n") ) );
5045  out->NoteOn(NULL,63,98,route.get(),0,cd);
5046 // CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n") ) );
5047 
5048  usleep(200000);
5049  out->NoteOff(NULL,63,55,route.get(),0,false);
5050 // CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n")) );
5051  out->NoteOff(NULL,60,54,route.get(),0,false);
5052 // CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n")) );
5053  out->NoteOff(NULL,56,53,route.get(),0,false);
5054 // CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n")) );
5055 
5056 
5057 
5058 
5059  out->Close();
5060 // DEBUGLOG (midiio, "|%s|" ,((std::string)(out->getOut())).c_str());
5061 // CPPUNIT_ASSERT( out->Check(("...closed.\n")) );
5062 }
#define DEBUGLOG(level,...)
Definition: debug.h:294
void NoteOff(Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)
Definition: Device.h:862
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:244
mutabor::Route route
Definition: DevMidFTest.h:245
mutabor::ChannelData cd
Definition: DevMidFTest.h:247
mutabor::Box box
Definition: DevMidFTest.h:246
void NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
Definition: Device.h:852

◆ testPanic()

void CommonMidiInputTest::testPanic ( )

Definiert in Zeile 653 der Datei midicmnTest.cpp.

Benutzt box, mutabor::OutputDeviceClass::Close(), mutabor::InputMidiFile::Close(), DEBUGLOG, DEFAULT_PANIC, in, mutabor::InputDeviceClass::NoteOff(), mutabor::InputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), mutabor::InputMidiFile::Open(), out, mutabor::InputDeviceClass::Panic() und mutabor::str().

654 {
655  CPPUNIT_ASSERT( in );
656  out->Open();
657  box->Open();
658  CPPUNIT_ASSERT( out->Check(("Opened...\n"
659  " 0: e0 00 40\n"
660  " 0: b0 7a 00\n"
661  " 0: b0 7d 00\n"
662  " 0: b0 7f 00\n"
663  " 0: b0 65 00\n"
664  " 0: b0 64 00\n"
665  " 0: b0 06 02\n"
666  " 0: b0 26 00\n"
667  " 1: e1 00 40\n"
668  " 1: b1 7a 00\n"
669  " 1: b1 7d 00\n"
670  " 1: b1 7f 00\n"
671  " 1: b1 65 00\n"
672  " 1: b1 64 00\n"
673  " 1: b1 06 02\n"
674  " 1: b1 26 00\n"
675  " 2: e2 00 40\n"
676  " 2: b2 7a 00\n"
677  " 2: b2 7d 00\n"
678  " 2: b2 7f 00\n"
679  " 2: b2 65 00\n"
680  " 2: b2 64 00\n"
681  " 2: b2 06 02\n"
682  " 2: b2 26 00\n"
683  " 3: e3 00 40\n"
684  " 3: b3 7a 00\n"
685  " 3: b3 7d 00\n"
686  " 3: b3 7f 00\n"
687  " 3: b3 65 00\n"
688  " 3: b3 64 00\n"
689  " 3: b3 06 02\n"
690  " 3: b3 26 00\n"
691  " 4: e4 00 40\n"
692  " 4: b4 7a 00\n"
693  " 4: b4 7d 00\n"
694  " 4: b4 7f 00\n"
695  " 4: b4 65 00\n"
696  " 4: b4 64 00\n"
697  " 4: b4 06 02\n"
698  " 4: b4 26 00\n"
699  " 5: e5 00 40\n"
700  " 5: b5 7a 00\n"
701  " 5: b5 7d 00\n"
702  " 5: b5 7f 00\n"
703  " 5: b5 65 00\n"
704  " 5: b5 64 00\n"
705  " 5: b5 06 02\n"
706  " 5: b5 26 00\n"
707  " 6: e6 00 40\n"
708  " 6: b6 7a 00\n"
709  " 6: b6 7d 00\n"
710  " 6: b6 7f 00\n"
711  " 6: b6 65 00\n"
712  " 6: b6 64 00\n"
713  " 6: b6 06 02\n"
714  " 6: b6 26 00\n"
715  " 7: e7 00 40\n"
716  " 7: b7 7a 00\n"
717  " 7: b7 7d 00\n"
718  " 7: b7 7f 00\n"
719  " 7: b7 65 00\n"
720  " 7: b7 64 00\n"
721  " 7: b7 06 02\n"
722  " 7: b7 26 00\n"
723  " 8: e8 00 40\n"
724  " 8: b8 7a 00\n"
725  " 8: b8 7d 00\n"
726  " 8: b8 7f 00\n"
727  " 8: b8 65 00\n"
728  " 8: b8 64 00\n"
729  " 8: b8 06 02\n"
730  " 8: b8 26 00\n"
731  " 9: e9 00 40\n"
732  " 9: b9 7a 00\n"
733  " 9: b9 7d 00\n"
734  " 9: b9 7f 00\n"
735  " 9: b9 65 00\n"
736  " 9: b9 64 00\n"
737  " 9: b9 06 02\n"
738  " 9: b9 26 00\n"
739  " 10: ea 00 40\n"
740  " 10: ba 7a 00\n"
741  " 10: ba 7d 00\n"
742  " 10: ba 7f 00\n"
743  " 10: ba 65 00\n"
744  " 10: ba 64 00\n"
745  " 10: ba 06 02\n"
746  " 10: ba 26 00\n"
747  " 11: eb 00 40\n"
748  " 11: bb 7a 00\n"
749  " 11: bb 7d 00\n"
750  " 11: bb 7f 00\n"
751  " 11: bb 65 00\n"
752  " 11: bb 64 00\n"
753  " 11: bb 06 02\n"
754  " 11: bb 26 00\n"
755  " 12: ec 00 40\n"
756  " 12: bc 7a 00\n"
757  " 12: bc 7d 00\n"
758  " 12: bc 7f 00\n"
759  " 12: bc 65 00\n"
760  " 12: bc 64 00\n"
761  " 12: bc 06 02\n"
762  " 12: bc 26 00\n"
763  " 13: ed 00 40\n"
764  " 13: bd 7a 00\n"
765  " 13: bd 7d 00\n"
766  " 13: bd 7f 00\n"
767  " 13: bd 65 00\n"
768  " 13: bd 64 00\n"
769  " 13: bd 06 02\n"
770  " 13: bd 26 00\n"
771  " 14: ee 00 40\n"
772  " 14: be 7a 00\n"
773  " 14: be 7d 00\n"
774  " 14: be 7f 00\n"
775  " 14: be 65 00\n"
776  " 14: be 64 00\n"
777  " 14: be 06 02\n"
778  " 14: be 26 00\n"
779  " 15: ef 00 40\n"
780  " 15: bf 7a 00\n"
781  " 15: bf 7d 00\n"
782  " 15: bf 7f 00\n"
783  " 15: bf 65 00\n"
784  " 15: bf 64 00\n"
785  " 15: bf 06 02\n"
786  " 15: bf 26 00\n"), __LINE__, (__FILE__)) );
787  in->Open();
788 
789  /* check all permutations */
790 
791  DEBUGLOG (midiio, "123" );
792 
793  in->NoteOn(0,56,96);
794  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
795  in->NoteOn(0,60,97);
796  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
797  in->NoteOn(0,63,98);
798  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
799 
800  in->NoteOff(0,56,53);
801  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__) ) );
802  in->NoteOff(0,60,54);
803  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
804  in->NoteOff(0,63,55);
805  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__) ) );
806 
807  DEBUGLOG (midiio, "132" );
808 
809  in->NoteOn(0,56,96);
810  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
811  in->NoteOn(0,60,97);
812  CPPUNIT_ASSERT( out->Check((" 4: 94 3c 61\n"), __LINE__, (__FILE__) ) );
813  in->NoteOn(0,63,98);
814  CPPUNIT_ASSERT( out->Check((" 5: 95 3f 62\n"), __LINE__, (__FILE__) ) );
815 
816  in->NoteOff(0,56,53);
817  CPPUNIT_ASSERT( out->Check((" 3: 83 38 35\n"), __LINE__, (__FILE__) ) );
818  in->NoteOff(0,63,55);
819  CPPUNIT_ASSERT( out->Check((" 5: 85 3f 37\n"), __LINE__, (__FILE__) ) );
820  in->NoteOff(0,60,54);
821  CPPUNIT_ASSERT( out->Check((" 4: 84 3c 36\n"), __LINE__, (__FILE__) ) );
822 
823  DEBUGLOG (midiio, "213" );
824 
825  in->NoteOn(0,56,96);
826  CPPUNIT_ASSERT( out->Check((" 6: 96 38 60\n"), __LINE__, (__FILE__) ) );
827  in->NoteOn(0,60,97);
828  CPPUNIT_ASSERT( out->Check((" 7: 97 3c 61\n"), __LINE__, (__FILE__) ) );
829  in->NoteOn(0,63,98);
830  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
831 
832  in->NoteOff(0,60,54);
833  CPPUNIT_ASSERT( out->Check((" 7: 87 3c 36\n"), __LINE__, (__FILE__) ) );
834  in->NoteOff(0,56,53);
835  CPPUNIT_ASSERT( out->Check((" 6: 86 38 35\n"), __LINE__, (__FILE__) ) );
836  in->NoteOff(0,63,55);
837  CPPUNIT_ASSERT( out->Check((" 8: 88 3f 37\n"), __LINE__, (__FILE__) ) );
838 
839  DEBUGLOG (midiio, "231" );
840 
841  in->NoteOn(0,56,96);
842  CPPUNIT_ASSERT( out->Check((" 10: 9a 38 60\n"), __LINE__, (__FILE__) ) );
843  in->NoteOn(0,60,97);
844  CPPUNIT_ASSERT( out->Check((" 11: 9b 3c 61\n"), __LINE__, (__FILE__) ) );
845  in->NoteOn(0,63,98);
846  CPPUNIT_ASSERT( out->Check((" 12: 9c 3f 62\n"), __LINE__, (__FILE__) ) );
847 
848  in->NoteOff(0,60,54);
849  CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 36\n"), __LINE__, (__FILE__) ) );
850  in->NoteOff(0,63,55);
851  CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 37\n"), __LINE__, (__FILE__) ) );
852  in->NoteOff(0,56,53);
853  CPPUNIT_ASSERT( out->Check((" 10: 8a 38 35\n"), __LINE__, (__FILE__) ) );
854 
855  DEBUGLOG (midiio, "312" );
856 
857  in->NoteOn(0,56,96);
858  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 60\n"), __LINE__, (__FILE__) ) );
859  in->NoteOn(0,60,97);
860  CPPUNIT_ASSERT( out->Check((" 14: 9e 3c 61\n"), __LINE__, (__FILE__) ) );
861  in->NoteOn(0,63,98);
862  CPPUNIT_ASSERT( out->Check((" 15: 9f 3f 62\n"), __LINE__, (__FILE__) ) );
863 
864  in->NoteOff(0,63,55);
865  CPPUNIT_ASSERT( out->Check((" 15: 8f 3f 37\n"), __LINE__, (__FILE__) ) );
866  // check sending note on with velocity = 0
867  in->NoteOff(0,56,53);
868  CPPUNIT_ASSERT( out->Check((" 13: 8d 38 35\n"), __LINE__, (__FILE__) ) );
869  in->NoteOff(0,60,54);
870  CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 36\n"), __LINE__, (__FILE__) ) );
871 
872  DEBUGLOG (midiio, "321" );
873 
874  // Add check for NULL as tone system parameter
875  in->NoteOn(0,56,96);
876  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
877  in->NoteOn(0,60,97);
878  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
879  in->NoteOn(0,63,98);
880  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
881 
882  in->NoteOff(0,63,55);
883  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__) ) );
884  in->NoteOff(0,60,54);
885  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
886  in->NoteOff(0,56,53);
887  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__) ) );
888 
889  // now collect data
890  DEBUGLOG (midiio, "123" );
891  in->NoteOn(0,56,96);
892  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
893  in->NoteOn(0,60,97);
894  CPPUNIT_ASSERT( out->Check((" 5: 95 3c 61\n"), __LINE__, (__FILE__) ) );
895  in->NoteOn(0,63,98);
896  CPPUNIT_ASSERT( out->Check((" 4: 94 3f 62\n"), __LINE__, (__FILE__) ) );
897 
898  DEBUGLOG (midiio, "132" );
899 
900  in->NoteOn(0,56,96);
901  CPPUNIT_ASSERT( out->Check((" 7: 97 38 60\n"), __LINE__, (__FILE__) ) );
902  in->NoteOn(0,60,97);
903  CPPUNIT_ASSERT( out->Check((" 6: 96 3c 61\n"), __LINE__, (__FILE__) ) );
904  in->NoteOn(0,63,98);
905  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
906 
907  DEBUGLOG (midiio, "213" );
908 
909  in->NoteOn(0,56,96);
910  CPPUNIT_ASSERT( out->Check((" 11: 9b 38 60\n"), __LINE__, (__FILE__) ) );
911  in->NoteOn(0,60,97);
912  CPPUNIT_ASSERT( out->Check((" 12: 9c 3c 61\n"), __LINE__, (__FILE__) ) );
913  in->NoteOn(0,63,98);
914  CPPUNIT_ASSERT( out->Check((" 10: 9a 3f 62\n"), __LINE__, (__FILE__) ) );
915 
916  DEBUGLOG (midiio, "231" );
917 
918  in->NoteOn(0,56,96);
919  CPPUNIT_ASSERT( out->Check((" 15: 9f 38 60\n"), __LINE__, (__FILE__) ) );
920  in->NoteOn(0,60,97);
921  CPPUNIT_ASSERT( out->Check((" 13: 9d 3c 61\n"), __LINE__, (__FILE__) ) );
922  in->NoteOn(0,63,98);
923  CPPUNIT_ASSERT( out->Check((" 14: 9e 3f 62\n"), __LINE__, (__FILE__) ) );
924 
925  DEBUGLOG (midiio, "312" );
926 
927  in->NoteOn(0,56,96);
928  CPPUNIT_ASSERT( out->Check((" 2: 92 38 60\n"), __LINE__, (__FILE__) ) );
929  in->NoteOn(0,60,97);
930  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
931  in->NoteOn(0,63,98);
932  CPPUNIT_ASSERT( out->Check((" 0: 90 3f 62\n"), __LINE__, (__FILE__) ) );
933 
934  DEBUGLOG (midiio, "321" );
935 
936  // Add check for NULL as tone system parameter
937  in->NoteOn(0,56,96);
938  CPPUNIT_ASSERT( out->Check((" 2: 82 38 40\n 2: 92 38 60\n"), __LINE__, (__FILE__) ) );
939  in->NoteOn(0,60,97);
940  CPPUNIT_ASSERT( out->Check((" 2: 82 38 40\n 2: 92 3c 61\n"), __LINE__, (__FILE__) ) );
941  in->NoteOn(0,63,98);
942  CPPUNIT_ASSERT( out->Check((" 3: 83 38 40\n 3: 93 3f 62\n"), __LINE__, (__FILE__) ) );
943 
944  in->NoteOff(0,56,53);
945  CPPUNIT_ASSERT( out->Check((" 7: 87 38 35\n"), __LINE__, (__FILE__) ) );
946  in->NoteOff(0,60,54);
947  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
948  in->NoteOff(0,63,55);
949  CPPUNIT_ASSERT( out->Check((" 0: 80 3f 37\n"), __LINE__, (__FILE__) ) );
950 
952  CPPUNIT_ASSERT( out->unsortedCheck(("\
953  2: b2 40 00\n\
954  3: b3 40 00\n\
955  4: b4 40 00\n\
956  5: b5 40 00\n\
957  6: b6 40 00\n\
958  8: b8 40 00\n\
959  10: ba 40 00\n\
960  11: bb 40 00\n\
961  12: bc 40 00\n\
962  13: bd 40 00\n\
963  14: be 40 00\n\
964  15: bf 40 00\n\
965  2: b2 42 00\n\
966  3: b3 42 00\n\
967  4: b4 42 00\n\
968  5: b5 42 00\n\
969  6: b6 42 00\n\
970  8: b8 42 00\n\
971  10: ba 42 00\n\
972  11: bb 42 00\n\
973  12: bc 42 00\n\
974  13: bd 42 00\n\
975  14: be 42 00\n\
976  15: bf 42 00\n\
977  2: b2 44 00\n\
978  3: b3 44 00\n\
979  4: b4 44 00\n\
980  5: b5 44 00\n\
981  6: b6 44 00\n\
982  8: b8 44 00\n\
983  10: ba 44 00\n\
984  11: bb 44 00\n\
985  12: bc 44 00\n\
986  13: bd 44 00\n\
987  14: be 44 00\n\
988  15: bf 44 00\n\
989  2: b2 45 00\n\
990  3: b3 45 00\n\
991  4: b4 45 00\n\
992  5: b5 45 00\n\
993  6: b6 45 00\n\
994  8: b8 45 00\n\
995  10: ba 45 00\n\
996  11: bb 45 00\n\
997  12: bc 45 00\n\
998  13: bd 45 00\n\
999  14: be 45 00\n\
1000  15: bf 45 00\n\
1001  3: 83 3f 62\n\
1002  4: 84 3f 62\n\
1003  8: 88 3f 62\n\
1004  10: 8a 3f 62\n\
1005  14: 8e 3f 62\n\
1006  2: 82 3c 61\n\
1007  5: 85 3c 61\n\
1008  6: 86 3c 61\n\
1009  12: 8c 3c 61\n\
1010  13: 8d 3c 61\n\
1011  11: 8b 38 60\n\
1012  15: 8f 38 60\n\
1013 "),
1014  __LINE__,
1015  (__FILE__) ) );
1016 
1017  in->NoteOff(0,56,53);
1018  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1019  in->NoteOff(0,63,55);
1020  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1021  in->NoteOff(0,60,54);
1022  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1023 
1024  in->NoteOff(0,60,54);
1025  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1026  in->NoteOff(0,56,53);
1027  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1028  in->NoteOff(0,63,55);
1029  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1030 
1031  in->NoteOff(0,60,54);
1032  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1033  in->NoteOff(0,63,55);
1034  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1035  in->NoteOff(0,56,53);
1036  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1037 
1038  in->NoteOff(0,63,55);
1039  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1040  // check sending note on with velocity = 0
1041  in->NoteOff(0,56,53);
1042  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1043  in->NoteOff(0,60,54);
1044  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1045 
1046  in->NoteOff(0,63,55);
1047  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1048  in->NoteOff(0,60,54);
1049  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1050  in->NoteOff(0,56,53);
1051  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1052 
1053  in->Close();
1054  out->Close();
1055  DEBUGLOG (midiio, "|%s|" , str(out->getOut()));
1056  CPPUNIT_ASSERT( out->Check(("...closed.\n"), __LINE__, (__FILE__) ) );
1057 }
bool unsortedCheck(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.cpp:39
#define DEBUGLOG(level,...)
Definition: debug.h:294
std::string str(T obj)
Definition: Defs.h:131
midicmnInputDevice * in
Definition: midicmnTest.h:230
#define DEFAULT_PANIC
Definition: MidiKern.h:322
mutabor::DebugMidiOutputProvider & getOut()
Definition: midicmnTest.h:78
midicmnOutputDevice * out
Definition: midicmnTest.h:229
void NoteOn(int channel, int inkey, int velocity)
Definition: midicmnTest.h:180
virtual void Close()
Definition: Device.h:1130
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void Panic(int type)
reset the device if requested
Definition: Device.cpp:429
void NoteOff(int channel, int inkey, int velocity)
Definition: midicmnTest.h:187
mutabor::Box box
Definition: midicmnTest.h:232

◆ testRpnNrpn()

void InputMidiFileTest::testRpnNrpn ( )

Definiert in Zeile 1701 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testPlayMidi().

1702 {
1703 #ifdef DEBUG
1704 // mutabor_debug_flags.timer = true;
1705 // mutabor_debug_flags.midiio = true;
1706 // mutabor_debug_flags.midifile = true;
1707 #endif
1708 
1709  // input device is set up during setUp
1710  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1711  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1712  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1713  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1714 
1717  mutabor::ScopedBox box(NULL);
1720 
1723  connect(route,box);
1724 
1726  out = new midicmnOutputDevice(("Test"));
1727  out->SetBendingRange(2);
1728  //out = new midicmnOutputDevice(3,("Test"));
1729  guard = out;
1730 
1731  connect(route,guard);
1732  route->SetOutputFrom (0);
1733  route->SetOutputTo (15);
1734  route->OutputAvoidDrumChannel (true);
1735 
1736  connect(route, in);
1737 
1738  CPPUNIT_ASSERT( in );
1739  in -> SetName(SRCDIR "/rpn_nrpn.mid");
1740 
1741 
1742  // First check: Input device provides the correct delta times
1744  mutabor::CurrentTime = mutabor::microseconds(0);
1745 
1746 // in -> Play(wxTHREAD_JOINABLE);
1748 
1749  /* controller values:
1750  4: 62 63 06 26: 00 00 0d 25
1751  8: 64 65 06 26: 00 00 07 03
1752  11: 64 65 06 26: 01 00 09 --
1753  13: 62 63 06 26: 00 6f -- 0c
1754  15: 62 63 06 26: 26 6f -- 5d
1755  */
1756 
1757  CPPUNIT_ASSERT(out->Check((
1758 "0 Opened...\n"
1759 "0 0: e0 00 40\n"
1760 "0 0: b0 7a 00\n"
1761 "0 0: b0 7d 00\n"
1762 "0 0: b0 7f 00\n"
1763 "0 0: b0 65 00\n"
1764 "0 0: b0 64 00\n"
1765 "0 0: b0 06 02\n"
1766 "0 0: b0 26 00\n"
1767 "0 1: e1 00 40\n"
1768 "0 1: b1 7a 00\n"
1769 "0 1: b1 7d 00\n"
1770 "0 1: b1 7f 00\n"
1771 "0 1: b1 65 00\n"
1772 "0 1: b1 64 00\n"
1773 "0 1: b1 06 02\n"
1774 "0 1: b1 26 00\n"
1775 "0 2: e2 00 40\n"
1776 "0 2: b2 7a 00\n"
1777 "0 2: b2 7d 00\n"
1778 "0 2: b2 7f 00\n"
1779 "0 2: b2 65 00\n"
1780 "0 2: b2 64 00\n"
1781 "0 2: b2 06 02\n"
1782 "0 2: b2 26 00\n"
1783 "0 3: e3 00 40\n"
1784 "0 3: b3 7a 00\n"
1785 "0 3: b3 7d 00\n"
1786 "0 3: b3 7f 00\n"
1787 "0 3: b3 65 00\n"
1788 "0 3: b3 64 00\n"
1789 "0 3: b3 06 02\n"
1790 "0 3: b3 26 00\n"
1791 "0 4: e4 00 40\n"
1792 "0 4: b4 7a 00\n"
1793 "0 4: b4 7d 00\n"
1794 "0 4: b4 7f 00\n"
1795 "0 4: b4 65 00\n"
1796 "0 4: b4 64 00\n"
1797 "0 4: b4 06 02\n"
1798 "0 4: b4 26 00\n"
1799 "0 5: e5 00 40\n"
1800 "0 5: b5 7a 00\n"
1801 "0 5: b5 7d 00\n"
1802 "0 5: b5 7f 00\n"
1803 "0 5: b5 65 00\n"
1804 "0 5: b5 64 00\n"
1805 "0 5: b5 06 02\n"
1806 "0 5: b5 26 00\n"
1807 "0 6: e6 00 40\n"
1808 "0 6: b6 7a 00\n"
1809 "0 6: b6 7d 00\n"
1810 "0 6: b6 7f 00\n"
1811 "0 6: b6 65 00\n"
1812 "0 6: b6 64 00\n"
1813 "0 6: b6 06 02\n"
1814 "0 6: b6 26 00\n"
1815 "0 7: e7 00 40\n"
1816 "0 7: b7 7a 00\n"
1817 "0 7: b7 7d 00\n"
1818 "0 7: b7 7f 00\n"
1819 "0 7: b7 65 00\n"
1820 "0 7: b7 64 00\n"
1821 "0 7: b7 06 02\n"
1822 "0 7: b7 26 00\n"
1823 "0 8: e8 00 40\n"
1824 "0 8: b8 7a 00\n"
1825 "0 8: b8 7d 00\n"
1826 "0 8: b8 7f 00\n"
1827 "0 8: b8 65 00\n"
1828 "0 8: b8 64 00\n"
1829 "0 8: b8 06 02\n"
1830 "0 8: b8 26 00\n"
1831 "0 9: e9 00 40\n"
1832 "0 9: b9 7a 00\n"
1833 "0 9: b9 7d 00\n"
1834 "0 9: b9 7f 00\n"
1835 "0 9: b9 65 00\n"
1836 "0 9: b9 64 00\n"
1837 "0 9: b9 06 02\n"
1838 "0 9: b9 26 00\n"
1839 "0 10: ea 00 40\n"
1840 "0 10: ba 7a 00\n"
1841 "0 10: ba 7d 00\n"
1842 "0 10: ba 7f 00\n"
1843 "0 10: ba 65 00\n"
1844 "0 10: ba 64 00\n"
1845 "0 10: ba 06 02\n"
1846 "0 10: ba 26 00\n"
1847 "0 11: eb 00 40\n"
1848 "0 11: bb 7a 00\n"
1849 "0 11: bb 7d 00\n"
1850 "0 11: bb 7f 00\n"
1851 "0 11: bb 65 00\n"
1852 "0 11: bb 64 00\n"
1853 "0 11: bb 06 02\n"
1854 "0 11: bb 26 00\n"
1855 "0 12: ec 00 40\n"
1856 "0 12: bc 7a 00\n"
1857 "0 12: bc 7d 00\n"
1858 "0 12: bc 7f 00\n"
1859 "0 12: bc 65 00\n"
1860 "0 12: bc 64 00\n"
1861 "0 12: bc 06 02\n"
1862 "0 12: bc 26 00\n"
1863 "0 13: ed 00 40\n"
1864 "0 13: bd 7a 00\n"
1865 "0 13: bd 7d 00\n"
1866 "0 13: bd 7f 00\n"
1867 "0 13: bd 65 00\n"
1868 "0 13: bd 64 00\n"
1869 "0 13: bd 06 02\n"
1870 "0 13: bd 26 00\n"
1871 "0 14: ee 00 40\n"
1872 "0 14: be 7a 00\n"
1873 "0 14: be 7d 00\n"
1874 "0 14: be 7f 00\n"
1875 "0 14: be 65 00\n"
1876 "0 14: be 64 00\n"
1877 "0 14: be 06 02\n"
1878 "0 14: be 26 00\n"
1879 "0 15: ef 00 40\n"
1880 "0 15: bf 7a 00\n"
1881 "0 15: bf 7d 00\n"
1882 "0 15: bf 7f 00\n"
1883 "0 15: bf 65 00\n"
1884 "0 15: bf 64 00\n"
1885 "0 15: bf 06 02\n"
1886 "0 15: bf 26 00\n"
1887 "0 0: 90 3c 7f\n"
1888 "1000 0: b0 62 00\n"
1889 "2000 0: b0 63 00\n"
1890 "3000 0: b0 06 0d\n"
1891 "4000 0: b0 26 25\n"
1892 "5000 0: b0 64 00\n"
1893 "6000 0: b0 65 00\n"
1894 "7000 0: b0 06 02\n"
1895 "7000 0: b0 26 00\n"
1896 "9000 0: b0 64 01\n"
1897 "11000 0: b0 06 09\n"
1898 "12000 0: b0 63 6f\n"
1899 "13000 0: b0 26 0c\n"
1900 "14000 0: b0 62 26\n"
1901 "15000 0: b0 26 5d\n"
1902 "16000 1: 91 3d 7f\n"
1903 "16000 1: b1 63 00\n"
1904 "16000 1: b1 62 00\n"
1905 "16000 1: b1 06 0d\n"
1906 "16000 1: b1 26 25\n"
1907 "16000 1: b1 64 01\n"
1908 "16000 1: b1 65 00\n"
1909 "16000 1: b1 06 09\n"
1910 "16000 1: b1 63 6f\n"
1911 "16000 1: b1 26 0c\n"
1912 "16000 1: b1 62 26\n"
1913 "16000 1: b1 26 5d\n"
1914 "545000 0: 80 3c 40\n"
1915 "545000 1: 81 3d 40\n"
1916 "546000 ...closed.\n"
1917 ),__LINE__,(__FILE__)));
1918 
1919 }
mutabor::Route route
mutabor::InputDevice in
Definition: DevMidFTest.h:85
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ testSysEx()

void InputMidiFileTest::testSysEx ( )

Definiert in Zeile 5888 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), box, mutabor::Box0, cd, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::initialize_box_data(), name, out, route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), size, string und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testPlayMidi().

5889 {
5890 #ifdef DEBUG
5891 // mutabor::mutabor_debug_flags.timer = true;
5892 // mutabor::mutabor_debug_flags.midiio = true;
5893 // mutabor::mutabor_debug_flags.midifile = true;
5894 #endif
5895 
5896  // input device is set up during setUp
5897  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
5898  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
5899  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
5900  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
5901 
5904  mutabor::ScopedBox box(NULL);
5907 
5910  connect(route,box);
5912 
5913  std::string name = srcdir;
5914  name += ("/midiin.mut");
5915 
5916  std::ifstream file(name.c_str());
5917  CPPUNIT_ASSERT(file.is_open());
5918  file.seekg(0, std::ios::end);
5919  std::streampos length = file.tellg();
5920  file.seekg(0, std::ios::beg);
5921  char * logic_string = (char *) malloc((size_t)length+1);
5922  CPPUNIT_ASSERT(file.read(logic_string, length).gcount() == length);
5923  logic_string[length] = 0;
5924 
5925  MyCompileCallback callback;
5926  CPPUNIT_ASSERT(box->Compile(&callback, logic_string));
5927 
5928  free(logic_string);
5929  logic_string = NULL;
5930 
5931  route->SetActive(true);
5932 
5933 
5935  out = new midicmnOutputDevice(("Test"));
5936  out->SetBendingRange(2);
5937  //out = new midicmnOutputDevice(3,("Test"));
5938  guard = out;
5939 
5940  connect(route,guard);
5941  route->SetOutputFrom (0);
5942  route->SetOutputTo (15);
5943  route->OutputAvoidDrumChannel (true);
5944 
5945  connect(route, in);
5946 
5947  CPPUNIT_ASSERT( in );
5948  in -> SetName(SRCDIR "/sysex.mid");
5949 
5950 
5951  // First check: Input device provides the correct delta times
5953  mutabor::CurrentTime = mutabor::microseconds(0);
5954 
5955 // in -> Play(wxTHREAD_JOINABLE);
5957 
5958  CPPUNIT_ASSERT(out->Check((
5959 "0 Opened...\n"
5960 "0 0: e0 00 40\n"
5961 "0 0: b0 7a 00\n"
5962 "0 0: b0 7d 00\n"
5963 "0 0: b0 7f 00\n"
5964 "0 0: b0 65 00\n"
5965 "0 0: b0 64 00\n"
5966 "0 0: b0 06 02\n"
5967 "0 0: b0 26 00\n"
5968 "0 1: e1 00 40\n"
5969 "0 1: b1 7a 00\n"
5970 "0 1: b1 7d 00\n"
5971 "0 1: b1 7f 00\n"
5972 "0 1: b1 65 00\n"
5973 "0 1: b1 64 00\n"
5974 "0 1: b1 06 02\n"
5975 "0 1: b1 26 00\n"
5976 "0 2: e2 00 40\n"
5977 "0 2: b2 7a 00\n"
5978 "0 2: b2 7d 00\n"
5979 "0 2: b2 7f 00\n"
5980 "0 2: b2 65 00\n"
5981 "0 2: b2 64 00\n"
5982 "0 2: b2 06 02\n"
5983 "0 2: b2 26 00\n"
5984 "0 3: e3 00 40\n"
5985 "0 3: b3 7a 00\n"
5986 "0 3: b3 7d 00\n"
5987 "0 3: b3 7f 00\n"
5988 "0 3: b3 65 00\n"
5989 "0 3: b3 64 00\n"
5990 "0 3: b3 06 02\n"
5991 "0 3: b3 26 00\n"
5992 "0 4: e4 00 40\n"
5993 "0 4: b4 7a 00\n"
5994 "0 4: b4 7d 00\n"
5995 "0 4: b4 7f 00\n"
5996 "0 4: b4 65 00\n"
5997 "0 4: b4 64 00\n"
5998 "0 4: b4 06 02\n"
5999 "0 4: b4 26 00\n"
6000 "0 5: e5 00 40\n"
6001 "0 5: b5 7a 00\n"
6002 "0 5: b5 7d 00\n"
6003 "0 5: b5 7f 00\n"
6004 "0 5: b5 65 00\n"
6005 "0 5: b5 64 00\n"
6006 "0 5: b5 06 02\n"
6007 "0 5: b5 26 00\n"
6008 "0 6: e6 00 40\n"
6009 "0 6: b6 7a 00\n"
6010 "0 6: b6 7d 00\n"
6011 "0 6: b6 7f 00\n"
6012 "0 6: b6 65 00\n"
6013 "0 6: b6 64 00\n"
6014 "0 6: b6 06 02\n"
6015 "0 6: b6 26 00\n"
6016 "0 7: e7 00 40\n"
6017 "0 7: b7 7a 00\n"
6018 "0 7: b7 7d 00\n"
6019 "0 7: b7 7f 00\n"
6020 "0 7: b7 65 00\n"
6021 "0 7: b7 64 00\n"
6022 "0 7: b7 06 02\n"
6023 "0 7: b7 26 00\n"
6024 "0 8: e8 00 40\n"
6025 "0 8: b8 7a 00\n"
6026 "0 8: b8 7d 00\n"
6027 "0 8: b8 7f 00\n"
6028 "0 8: b8 65 00\n"
6029 "0 8: b8 64 00\n"
6030 "0 8: b8 06 02\n"
6031 "0 8: b8 26 00\n"
6032 "0 9: e9 00 40\n"
6033 "0 9: b9 7a 00\n"
6034 "0 9: b9 7d 00\n"
6035 "0 9: b9 7f 00\n"
6036 "0 9: b9 65 00\n"
6037 "0 9: b9 64 00\n"
6038 "0 9: b9 06 02\n"
6039 "0 9: b9 26 00\n"
6040 "0 10: ea 00 40\n"
6041 "0 10: ba 7a 00\n"
6042 "0 10: ba 7d 00\n"
6043 "0 10: ba 7f 00\n"
6044 "0 10: ba 65 00\n"
6045 "0 10: ba 64 00\n"
6046 "0 10: ba 06 02\n"
6047 "0 10: ba 26 00\n"
6048 "0 11: eb 00 40\n"
6049 "0 11: bb 7a 00\n"
6050 "0 11: bb 7d 00\n"
6051 "0 11: bb 7f 00\n"
6052 "0 11: bb 65 00\n"
6053 "0 11: bb 64 00\n"
6054 "0 11: bb 06 02\n"
6055 "0 11: bb 26 00\n"
6056 "0 12: ec 00 40\n"
6057 "0 12: bc 7a 00\n"
6058 "0 12: bc 7d 00\n"
6059 "0 12: bc 7f 00\n"
6060 "0 12: bc 65 00\n"
6061 "0 12: bc 64 00\n"
6062 "0 12: bc 06 02\n"
6063 "0 12: bc 26 00\n"
6064 "0 13: ed 00 40\n"
6065 "0 13: bd 7a 00\n"
6066 "0 13: bd 7d 00\n"
6067 "0 13: bd 7f 00\n"
6068 "0 13: bd 65 00\n"
6069 "0 13: bd 64 00\n"
6070 "0 13: bd 06 02\n"
6071 "0 13: bd 26 00\n"
6072 "0 14: ee 00 40\n"
6073 "0 14: be 7a 00\n"
6074 "0 14: be 7d 00\n"
6075 "0 14: be 7f 00\n"
6076 "0 14: be 65 00\n"
6077 "0 14: be 64 00\n"
6078 "0 14: be 06 02\n"
6079 "0 14: be 26 00\n"
6080 "0 15: ef 00 40\n"
6081 "0 15: bf 7a 00\n"
6082 "0 15: bf 7d 00\n"
6083 "0 15: bf 7f 00\n"
6084 "0 15: bf 65 00\n"
6085 "0 15: bf 64 00\n"
6086 "0 15: bf 06 02\n"
6087 "0 15: bf 26 00\n"
6088 "0 -1: SysEx 01 00 7f 01 End\n"
6089 "1000 -1: SysEx 7e 01 7f 03 End\n"
6090 "2000 -1: SysEx 7e 0a 7e 02 End\n"
6091 "3000 -1: SysEx 7e 00 01 02 7d 04 End\n"
6092 "4000 -1: SysEx 7e 00 03 04 7c 05 End\n"
6093 "5000 -1: SysEx 7e 02 7b 06 End\n"
6094 "6000 -1: SysEx 7e 03 01 23 45 08 01 00 00 02 00 00 00 00 00 02 00 00 01 End\n"
6095 "7000 -1: SysEx 7e 04 03 01 23 End\n"
6096 "8000 -1: SysEx 7e 05 02 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7e End\n"
6097 "9000 -1: SysEx 7e 06 05 01 23 45 01 02 01 01 00 00 02 00 00 End\n"
6098 "10000 -1: SysEx 7e 07 05 02 23 45 01 00 End\n"
6099 "11000 -1: SysEx 7e 08 06 01 End\n"
6100 "12000 -1: SysEx 7e 09 06 02 08 7e 6d 5c 4b 00 04 00 00 End\n"
6101 "546000 ...closed.\n"
6102 ),__LINE__,(__FILE__)));
6103 
6104 }
#define string
mutabor::Route route
mutabor::InputDevice in
Definition: DevMidFTest.h:85
void initialize_box_data()
Definition: Box.cpp:1107
const char * name
Definition: TabGen.cpp:59
static const listtype & GetBoxList()
Definition: Box.h:355
mutabor::OutputMidiFile * out
size_t size
Definition: Hilfs.cpp:86
static const routeListType & GetRouteList()
Definition: Route.h:407
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:639
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
bool Check(const std::string &s, int line=-1, const std::string &filename=(__FILE__))
Definition: midicmnTest.h:88
void SetBendingRange(int br)
Definition: midicmn.h:551
static Box Create(int type, int id=NewBox)
Definition: Box.h:905
mutabor::ChannelData cd
static const listtype & GetDeviceList()
Definition: Device.h:755
mutabor::Box box
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:442
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:600

◆ thisptr() [1/2]

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
thistype* mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr ( )
inline

Definiert in Zeile 781 der Datei Device.h.

781  {
782  return static_cast<thistype *>(this);
783  }

◆ thisptr() [2/2]

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
const thistype* mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr ( ) const
inline

Definiert in Zeile 785 der Datei Device.h.

785  {
786  return static_cast<const thistype *>(this);
787  }

◆ to_string()

const char* mutabor::to_string ( error_type  type)
inline

◆ tone() [1/3]

mutabor::BoxClass::tone::tone ( )
inline

Definiert in Zeile 150 der Datei Box.h.

Benutzt mutabor_invalid_tone.

150  : base() {
152  value = 0;
153  }
hidden::mutabor_tone base
Definition: Box.h:148

◆ tone() [2/3]

mutabor::BoxClass::tone::tone ( base  t)
inline

Definiert in Zeile 154 der Datei Box.h.

154 :base(t) {}
hidden::mutabor_tone base
Definition: Box.h:148
MUTABOR_EXTERN_C_END const char * t
Definition: debug.h:323

◆ tone() [3/3]

mutabor::BoxClass::tone::tone ( int  inkey)
inline

Definiert in Zeile 155 der Datei Box.h.

Benutzt mutabor_active_tone und mutint64.

155  : base ()
156  {
158  value = ((mutint64)inkey) << 24;
159  }
hidden::mutabor_tone base
Definition: Box.h:148
#define mutint64
Definition: Defs.h:105

◆ tone_entry() [1/2]

mutabor::box_support::tone_entry::tone_entry ( double  p)
inline

Definiert in Zeile 61 der Datei box_support.h.

61  :pitch(p),
62  flag(sounding) {}
enum mutabor::box_support::tone_entry::@53 flag
string_parser p("\onstant tone system\0")

◆ tone_entry() [2/2]

mutabor::box_support::tone_entry::tone_entry ( )
inline

Definiert in Zeile 63 der Datei box_support.h.

63  :pitch(0.0),
64  flag(silent) {}
enum mutabor::box_support::tone_entry::@53 flag

◆ ToString() [1/2]

std::string GisReadHead::ToString ( )
virtual

Erneute Implementation in GisReadArtHead.

Definiert in Zeile 349 der Datei GIS_Head.cpp.

Benutzt mutabor::str() und string.

Wird benutzt von GisReadHead::operator std::string(), GisReadArtHead::operator std::string() und GisReadArtHead::ToString().

350 {
351  std::string ret = boost::str(boost::format("GisReadHead: {\nthis: %p; Boss: %p; Next: %p; Prev: %p; PrevPtr: %p; *PrevPtr: %p;\n"
352  "nSub: %d; Cursor: {\n")
353  % (void*)this% (void*)Boss% (void*)Next% (void*)Prev%
354  (void*)PrevPtr% (void*)*PrevPtr% nSub) +
355  (Cursor?((std::string) *Cursor):std::string((""))) + ("}\nTime: ") + (str(Time)) +
356  boost::str(boost::format("; Id: '%s'; Turn: %d; SingleToken: %d\n}\n")%
357  Id.c_str()% Turn% SingleToken);
358  return ret;
359 }
GisToken * Cursor
Definition: GIS_Head.h:71
GisReadHead ** PrevPtr
Definition: GIS_Head.h:68
#define string
GisReadHead * Boss
Definition: GIS_Head.h:69
std::string str(T obj)
Definition: Defs.h:131
GisReadHead * Next
Definition: GIS_Head.h:68
STL namespace.
GisReadHead * Prev
Definition: GIS_Head.h:68
mutabor::frac Time
Definition: GIS_Head.h:72
char Turn
Definition: GIS_Head.h:74
int nSub
Definition: GIS_Head.h:70
bool SingleToken
Definition: GIS_Head.h:75
std::string Id
Definition: GIS_Head.h:73

◆ ToString() [2/2]

std::string GisReadArtHead::ToString ( )
virtual

Erneute Implementation von GisReadHead.

Definiert in Zeile 622 der Datei GIS_Head.cpp.

Benutzt mutabor::str(), string und GisReadHead::ToString().

623 {
624  std::string ret = ("GisReadArtHead: {\n") ;
625  ret += GisReadHead::ToString();
626  ret += ("Time2: ") + (str(Time2));
627  ret += boost::str(boost::format("; Delta: %ld; Box: %d (%p)\n"
628  "Intensity: %p; Articulation: %p; Octave: %p\n"
629  "Alter: %p; Instr: %p; Tempo: %p\n"
630  "}\n") % Delta % Box->get_routefile_id() % Box.get() %
631  (void*)Intensity % (void*)Articulation % (void*)Octave %
632  (void*)Alter % (void*)Instr % (void*)Tempo);
633  return ret;
634 }
#define string
TagList * Instr
Definition: GIS_Head.h:175
std::string str(T obj)
Definition: Defs.h:131
TagList * Alter
Definition: GIS_Head.h:174
TagList * Intensity
Definition: GIS_Head.h:171
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:129
TagList * Tempo
Definition: GIS_Head.h:176
mutabor::frac Time2
Definition: GIS_Head.h:166
virtual std::string ToString()
Definition: GIS_Head.cpp:349
TagList * Octave
Definition: GIS_Head.h:173
boost::chrono::microseconds Delta
Definition: GIS_Head.h:167
TagList * Articulation
Definition: GIS_Head.h:172

◆ TRouteClass() [1/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::TRouteClass ( )
inlineprotected

Definiert in Zeile 490 der Datei Route.h.

490  :
491  userdata(this,"userdata") {
492  TRACEC;
493  AppendToRouteList(this);
494  InputDevice in (NULL);
495  OutputDevice out (NULL);
496  Create(in,out,RTall,
497  -1,-1,
498  NULL,
499  false,
500  -1,-1,true);
501  }
mutabor::InputMidiFile * in
#define TRACEC
Definition: debug.h:300
mutabor::OutputMidiFile * out
all events will pass
Definition: Route.h:81
void Create(InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
static void AppendToRouteList(Route route)
Definition: Route.cpp:283

◆ TRouteClass() [2/2]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::TRouteClass ( InputDevice in,
OutputDevice out,
RouteType  type = RTall,
int  iFrom = -1,
int  iTo = -1,
Box box = NULL,
bool  active = false,
int  oFrom = -1,
int  oTo = -1,
bool  oNoDrum = true 
)
inlineprotected

Definiert in Zeile 503 der Datei Route.h.

513  :
514  userdata(this,"userdata")
515  {
516  TRACEC;
517  AppendToRouteList(this);
518  Create(in,out,type,
519  iFrom,iTo,
520  box,
521  active,
522  oFrom,oTo,oNoDrum);
523  }
mutabor::InputMidiFile * in
#define TRACEC
Definition: debug.h:300
mutabor::OutputMidiFile * out
void Create(InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
static void AppendToRouteList(Route route)
Definition: Route.cpp:283

◆ TruncateBoxList()

void mutabor::BoxClass::TruncateBoxList ( Box  dev)
staticprotected

Definiert in Zeile 307 der Datei Box.cpp.

Benutzt mutUnused und STUB.

308  {
309  mutUnused(dev);
310  STUB;
311  return;
312 #if 0
313  if (!boxList) return;
314 
315  if (boxList == dev) {
316  boxList = NULL;
317  return;
318  }
319 
320  DevicePtr d = boxList ;
321  while (d->GetNext() && d->GetNext() != dev) {
322  d = d->GetNext();
323  }
324  if (d->GetNext()) {
325  d -> SetNext(NULL);
326  }
327 #endif
328  }
#define STUB
Definition: debug.h:304
#define mutUnused(expr)
Definition: Defs.h:106
static listtype boxList
Definition: Box.h:811

◆ TruncateDeviceList()

template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::TruncateDeviceList ( DevicePtr  dev)
staticprotected

Definiert in Zeile 313 der Datei Device.cpp.

314  {
315  mutUnused(dev);
316  STUB;
317  return;
318 #if 0
319  if (!deviceList) return;
320 
321  if (deviceList == dev) {
322  deviceList = NULL;
323  return;
324  }
325 
326  DevicePtr d = deviceList ;
327  while (d->GetNext() && d->GetNext() != dev) {
328  d = d->GetNext();
329  }
330  if (d->GetNext()) {
331  d -> SetNext(NULL);
332  }
333 #endif
334  }
#define STUB
Definition: debug.h:304
#define mutUnused(expr)
Definition: Defs.h:106
static listtype deviceList
Definition: Device.h:697

◆ unlock_callback()

void mutabor::BoxClass::unlock_callback ( hidden::mutabor_logic_parsed logic)
static

Definiert in Zeile 958 der Datei Box.cpp.

Benutzt mutASSERT() und mutabor::hidden::mutabor_logic_parsed::mutex.

958  {
959  mutASSERT(logic->mutex);
960  if (logic->mutex) {
961  static_cast<Mutex<> *>(logic->mutex)->Unlock();
962  }
963  }
Definition: thread.h:268
mutASSERT(p.get_intervals==cmp)

◆ UnRavel()

void UnRavel ( )

Definiert in Zeile 803 der Datei GIS.cpp.

Benutzt Clear(), LastOpenBracket, GisToken::Next, p(), Para und TagName.

Wird benutzt von GisParse().

804 {
805  *Current = 0;
806  // unravel Next pointers
807 
808  while ( LastOpenBracket ) {
810  LastOpenBracket = p->Next;
811  p->Next = 0;
812  }
813 
814  // clear TagName
815  if ( TagName.size() ) Clear(&TagName);
816 
817  // clear Para
818  if ( Para ) delete Para;
819 }
Definition: GIS.h:116
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
std::string TagName
Definition: GIS.cpp:110
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
void Clear(std::string *s)
Definition: GIS.cpp:493
string_parser p("\onstant tone system\0")

◆ Unregister()

void mutabor::BoxClass::Unregister ( ChangedCallback callback)
inlineprotected

Definiert in Zeile 851 der Datei Box.h.

851  {
852  callbacks.remove(callback);
853  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:826

◆ unsortedCheck()

bool midicmnOutputDevice::unsortedCheck ( const std::string s,
int  line = -1,
const std::string filename = (__FILE__) 
)

Definiert in Zeile 39 der Datei midicmnTest.cpp.

Benutzt mutabor::DebugMidiOutputProvider::ClearData(), DEBUGLOG, mutUnused, mutabor::CommonMidiOutput< mutabor::DebugMidiOutputProvider, mutabor::OutputDeviceClass >::Out, mutabor::str() und string.

Wird benutzt von midicmnOutputDevice::Check().

42 {
43  mutUnused(line);
44  mutUnused(filename);
45  std::multiset<std::string> left, right;
46  std::stringstream str;
47  std::string cmd;
48  str.str(s);
49  while (getline(str, cmd)) {
50  left.insert(cmd);
51  }
52 
53  cmd = Out;
54  str.str(cmd);
55  str.clear();
56  str.seekg(0);
57  while (getline(str, cmd)) {
58  right.insert(cmd);
59  }
60 
61  bool retval = (left == right);
62  if (!retval) {
63  DEBUGLOG (always, "Check failed:\n%s:%d:" ,filename.c_str(),line);
64  str.str("");
65  std::multiset<std::string>::iterator
66  lit = left.begin(),
67  rit = right.begin();
68  while (lit != left.end() && rit != right.end()) {
69  if (lit == left.end()) {
70  str << "-" << *(rit++) << std::endl;
71  } else if (rit == right.end()) {
72  str << "+" << *(lit++) << std::endl;
73  } else if (*lit < *rit) {
74  str << "+" << *(lit++) << std::endl;
75  } else if (*rit < *lit) {
76  str << "-" << *(rit++) << std::endl;
77  } else {
78  str << " " << *(lit++) << std::endl;
79  rit++;
80  }
81  }
82 
83  DEBUGLOG (always, "Diff:\n%s" ,str.str().c_str());
84  }
85  Out.ClearData();
86  // retval = true;
87  return retval;
88 }
#define string
#define DEBUGLOG(level,...)
Definition: debug.h:294
std::string str(T obj)
Definition: Defs.h:131
#define mutUnused(expr)
Definition: Defs.h:106

◆ UpdateCallback()

void mutabor::BoxClass::UpdateCallback ( mutabor_box_type b,
unsigned int  flags 
)
static

Definiert in Zeile 915 der Datei Box.cpp.

Benutzt mutabor::BoxClass::ChangedCallback::ActionChanged, mutabor::BoxClass::ChangedCallback::BoxChanged, mutabor::BoxClass::ChangedCallback::KeysChanged, mutabor::BoxClass::ChangedCallback::LogicChanged, mutabor::hidden::mutabor_action_changed, mutabor::hidden::mutabor_box_changed, mutabor::hidden::mutabor_keys_changed, mutabor::hidden::mutabor_logic_changed und mutabor::BoxClass::updateflags.

◆ UpdateTones() [1/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::UpdateTones ( )
inline

Definiert in Zeile 241 der Datei Route.h.

241  {
242  if (Out && Out->IsOpen())
243  Out->UpdateTones(this);
244  }
OutputDevice Out
Definition: Route.h:466

◆ UpdateTones() [2/3]

void mutabor::BoxClass::UpdateTones ( )

Update the currently playing tones to the current tone system.

Zu beachten
this function was formerly defined as NotesCorrect

Definiert in Zeile 797 der Datei Box.cpp.

Benutzt route.

798  {
799  for (routeListType::const_iterator route = routes.begin();
800  route != routes.end(); route++) {
801  (*route)->UpdateTones();
802  }
803  }
mutabor::Route route
routeListType routes
Definition: Box.h:819

◆ UpdateTones() [3/3]

void mutabor::OutputDeviceClass::UpdateTones ( RouteClass route)
inline

Definiert in Zeile 871 der Datei Device.h.

871  {
872  ScopedLock<OutputDeviceClass> lock(*this);
874  }
mutabor::Route route
virtual void do_UpdateTones(RouteClass *route)=0

◆ WaitForDeviceFinish()

virtual int mutabor::InputDeviceClass::WaitForDeviceFinish ( bool  blocking = true)
inlinevirtual

Wait for the thread started with Play().

This function can be used to wait for the device to finish playing. It can be used for joinable threads, only. For detached threads its behaviour is undefined.

Parameter
flagsIndicators how to wait see wxThread::Wait for more detail.
Rückgabe
exit code from the thread after it has ended. Non-threaded devices will return NULL.

Erneute Implementation in mutabor::CommonFileInputDevice.

Definiert in Zeile 1208 der Datei Device.h.

Benutzt mutUnused.

1208  {
1209  mutUnused(blocking);
1210  return 0;
1211  }
#define mutUnused(expr)
Definition: Defs.h:106

◆ was_last_stop()

static bool mutabor::InputDeviceClass::was_last_stop ( )
inlinestatic

Definiert in Zeile 1185 der Datei Device.h.

1185 { return last_was_stop; }
static bool last_was_stop
Definition: Device.h:1338

◆ WATCHEDPTR()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::WATCHEDPTR ( void  ,
routing  ,
TRouteClass< I, O, B >   
)
protected

◆ what() [1/2]

virtual const char* mutabor::BoxFactory::FactoryNotFound::what ( void  ) const
throw (
)
inlinevirtual

Returns the thrown error message as a c-style string.

Definiert in Zeile 898 der Datei Box.h.

898 { return message_.c_str(); }

◆ what() [2/2]

virtual const char* mutabor::DeviceFactory::FactoryNotFound::what ( void  ) const
throw (
)
inlinevirtual

Returns the thrown error message as a c-style string.

Definiert in Zeile 1383 der Datei Device.h.

1383 { return message_.c_str(); }

◆ WriteChord()

void GisWriteHead::WriteChord ( )

Definiert in Zeile 1379 der Datei GIS_Head.cpp.

Benutzt ChordNote::CheckClose(), mutabor::CurrentTime, ChordNote::Data und ChordNote::Next.

1380 {
1381  if ( !ChordNotes ) return;
1382 
1383  // close open ties
1384  ChordNote *ANote = ChordNotes;
1385 
1386  while ( ANote ) {
1387  ANote->CheckClose();
1388  ANote = ANote->Next;
1389  }
1390 
1391  char BossLine = 1; // wether in Boss data also data for Chord;
1392 
1393  char SingleLine = 0; // wether there is in fact only one Line (no real chord)
1394 
1395  if ( Cursor == ChordPos )
1396  BossLine = 0;
1397 
1398  if ( !ChordNotes->Next && !BossLine )
1399  SingleLine = 1;
1400 
1401 #ifdef CHORDS_WITH_REST
1402  ChordNotes->AddRest();
1403 
1404 #endif
1405  if ( SingleLine ) // only one line (no real chord)
1406  {
1407  *(ChordNotes->Cursor) = *ChordPos;
1408  *ChordPos = ChordNotes->Data;
1409 
1410  if ( Cursor == ChordPos )
1412 
1413  ChordNotes->Data = 0;
1414  } else {}
1415 
1416  delete ChordNotes;
1417 
1418  ChordNotes = 0;
1419  CurrentTime = 0;
1420 }
GisToken ** Cursor
Definition: GIS_Head.h:437
ChordNote * ChordNotes
Definition: GIS_Head.h:325
GisToken ** ChordPos
Definition: GIS_Head.h:324
GisToken * Data
Definition: GIS_Head.h:436
void CheckClose()
Definition: GIS_Head.h:493
GisToken ** Cursor
Definition: GIS_Head.h:320
ChordNote * Next
Definition: GIS_Head.h:435
mutabor::frac CurrentTime
Definition: GIS_Head.h:321

◆ ~BoxClass()

mutabor::BoxClass::~BoxClass ( )
virtual

Definiert in Zeile 77 der Datei Box.cpp.

Benutzt box, debug_destruct_class(), DEBUGLOG, intrusive_ptr_add_ref(), mutabor_delete_box(), mutASSERT(), TRACEC und UNREACHABLEC.

78  {
79  // if there are remaining pointers we have other problems.
80  DEBUGLOG (routing, "this = %p" ,(void*)this);
81  if (open) Close();
83 #ifdef DEBUG
84  // prevent from endless destroy loop
87  BoxListType::iterator i = FindInBoxList(this);
88  if (i != boxList.end()) {
90  // boxList.erase(i);
91  }
92 #endif
93  TRACEC;
95  if (box) {
97  }
98  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
void debug_destruct_class(void *ptr)
Definition: debug.cpp:128
watchdog< Box > * loopguard
Definition: Box.h:844
static listtype boxList
Definition: Box.h:811
#define TRACEC
Definition: debug.h:300
void mutabor_delete_box(mutabor_box_type *box)
Definition: box.h:187
mutabor_box_type * box
Definition: Box.h:816
mutASSERT(p.get_intervals==cmp)
void Close()
Definition: Box.h:438
void intrusive_ptr_add_ref(intrusive_ptr_T *obj)
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:862
#define UNREACHABLEC
Definition: debug.h:310

◆ ~BoxFactory()

mutabor::BoxFactory::~BoxFactory ( )
virtual

Definiert in Zeile 1011 der Datei Box.cpp.

1011 {}

◆ ~BoxLock()

mutabor::BoxClass::BoxLock::~BoxLock ( )
inline

Definiert in Zeile 795 der Datei Box.h.

795  {
796  box->UpdateTones();
797  box->ExecuteCallbacks(box->updateflags);
798  }

◆ ~ChangedCallback()

mutabor::BoxClass::ChangedCallback::~ChangedCallback ( )
inline

Definiert in Zeile 236 der Datei Box.h.

236  {
237  if (box)
238  box->Unregister(this);
239  }

◆ ~ChannelData()

mutabor::ChannelData::~ChannelData ( )
inline

Definiert in Zeile 129 der Datei Device.h.

129 {}

◆ ~CommonTypedDeviceAPI()

template<class T , class P , class L >
mutabor::CommonTypedDeviceAPI< T, P, L >::~CommonTypedDeviceAPI ( )
virtual

Definiert in Zeile 119 der Datei Device.cpp.

120  {
121  // if there are remaining pointers we have other problems.
122  DEBUGLOG (routing, "this = %p" ,(void*)this);
123 #ifdef Debug
124  listttype::iterator i = FindInDeviceList(this);
125  if (i != deviceList.end()) {
126  UNREACHABLEC;
127  deviceList.erase(i);
128  }
129 #endif
130  debug_destruct_class(this);
131  TRACEC;
132  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
void debug_destruct_class(void *ptr)
Definition: debug.cpp:128
#define TRACEC
Definition: debug.h:300
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:819
static listtype deviceList
Definition: Device.h:697
#define UNREACHABLEC
Definition: debug.h:310

◆ ~Device()

virtual mutabor::Device::~Device ( )
inlinevirtual

Definiert in Zeile 515 der Datei Device.h.

Benutzt mutabor::Panic(), route und TRACEC.

515 { TRACEC; }
#define TRACEC
Definition: debug.h:300

◆ ~DeviceFactory()

mutabor::DeviceFactory::~DeviceFactory ( )
virtual

Definiert in Zeile 529 der Datei Device.cpp.

529 {}

◆ ~factorylist() [1/2]

mutabor::BoxFactory::factorylist::~factorylist ( )
inline

Definiert in Zeile 951 der Datei Box.h.

951  {
952  for (base::iterator i = begin();
953  i != end ();
954  i++) {
955  if (*i) {
956  delete (*i);
957  *i = 0;
958  }
959  }
960  }

◆ ~factorylist() [2/2]

mutabor::DeviceFactory::factorylist::~factorylist ( )
inline

Definiert in Zeile 1465 der Datei Device.h.

1465  {
1466  for (base::iterator i = begin();
1467  i != end ();
1468  i++) {
1469  if (*i) {
1470  delete (*i);
1471  *i = 0;
1472  }
1473  }
1474  }

◆ ~FactoryNotFound() [1/2]

virtual mutabor::BoxFactory::FactoryNotFound::~FactoryNotFound ( )
throw (
)
inlinevirtual

Definiert in Zeile 895 der Datei Box.h.

895 {}

◆ ~FactoryNotFound() [2/2]

virtual mutabor::DeviceFactory::FactoryNotFound::~FactoryNotFound ( )
throw (
)
inlinevirtual

Definiert in Zeile 1380 der Datei Device.h.

1380 {}

◆ ~InputDeviceClass()

virtual mutabor::InputDeviceClass::~InputDeviceClass ( )
inlinevirtual

Definiert in Zeile 1128 der Datei Device.h.

Benutzt TRACEC.

1128 { TRACEC; }
#define TRACEC
Definition: debug.h:300

◆ ~NoOutputDevice()

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual mutabor::TRouteClass< I, O, B >::NoOutputDevice::~NoOutputDevice ( )
throw (
)
inlinevirtual

Definiert in Zeile 135 der Datei Route.h.

135 {}

◆ ~OutputDeviceClass()

virtual mutabor::OutputDeviceClass::~OutputDeviceClass ( )
inlinevirtual

Definiert in Zeile 847 der Datei Device.h.

Benutzt mutaborGUI::IsOpen(), mutASSERT() und TRACEC.

847  {
848  TRACEC;
849  mutASSERT(!IsOpen());
850  TRACEC;
851  }
bool IsOpen() const
Definition: Device.h:636
#define TRACEC
Definition: debug.h:300
mutASSERT(p.get_intervals==cmp)

◆ ~RouteFactory()

mutabor::RouteFactory::~RouteFactory ( )
protectedvirtual

Destructor.

This destructor will destroy the route factory. It does not touch the route objects that are created using this class.

You should not delete the factory directly as it saves a pointer to

Definiert in Zeile 545 der Datei Route.cpp.

545 {}

◆ ~scoped_watchdog()

mutabor::BoxClass::scoped_watchdog::~scoped_watchdog ( )
inline

Definiert in Zeile 806 der Datei Box.h.

806  {
807  ScopedLock(box->logic_timing_mutex);
808  box->logic_timing = -1;
809  }
ScopedLock(mutex_type &m)
Definition: thread.h:259

◆ ~ScopedBox()

mutabor::ScopedBox::~ScopedBox ( )
inline

Definiert in Zeile 983 der Datei Box.h.

983  {
984  if (get())
985  get()->Destroy();
986  }

◆ ~ScopedInputDevice()

mutabor::ScopedInputDevice::~ScopedInputDevice ( )
inline

Definiert in Zeile 1531 der Datei Device.h.

1531  {
1532  if (get())
1533  get()->Destroy();
1534  }

◆ ~ScopedOutputDevice()

mutabor::ScopedOutputDevice::~ScopedOutputDevice ( )
inline

Definiert in Zeile 1548 der Datei Device.h.

1548  {
1549  if (get())
1550  get()->Destroy();
1551  }

◆ ~ScopedRoute()

mutabor::ScopedRoute::~ScopedRoute ( )
inline

Definiert in Zeile 293 der Datei Route-inlines.h.

Benutzt mutabor::RouteFactory::Destroy().

294  {
295  if (get())
296  get()->Destroy();
297  }

◆ ~set_callback()

mutabor::BoxClass::set_callback::~set_callback ( )
inline

Definiert in Zeile 834 der Datei Box.h.

Benutzt mutabor::BoxClass::current_compile_callback.

834  {
836  }
CompileCallback * current_compile_callback
Definition: Box.h:838

◆ ~TRouteClass()

template<class I , class O , class B >
mutabor::TRouteClass< I, O, B >::~TRouteClass ( )
virtual

Definiert in Zeile 55 der Datei Route.cpp.

56  {
57  DEBUGLOG (smartptr, "deleting %p" ,(void*)this);
58 #ifdef DEBUG
59  typename routeListType::iterator r =
60  std::find(routeList.begin(),
61  routeList.end(),
62  this);
63  mutASSERT(r == routeList.end());
64  TRACEC;
65 #endif
67  }
#define DEBUGLOG(level,...)
Definition: debug.h:294
void debug_destruct_class(void *ptr)
Definition: debug.cpp:128
#define TRACEC
Definition: debug.h:300
static routeListType routeList
Definition: Route.h:475
mutASSERT(p.get_intervals==cmp)

Variablen-Dokumentation

◆ accedentials

std::string accedentials
static

Definiert in Zeile 68 der Datei GSP.cpp.

Wird benutzt von GisNote::GisNote(), ReadNote() und GisComma::ToString().

◆ active

bool mutabor::BoxClass::logic_entry::active

Definiert in Zeile 476 der Datei Box.h.

◆ Active

template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::Active
protected

Definiert in Zeile 485 der Datei Route.h.

◆ anchor

int mutabor::box_support::tone_system::anchor

Definiert in Zeile 69 der Datei box_support.h.

Wird benutzt von MutTextBox::GetToneSystem() und mutabor::BoxClass::GetToneSystem().

◆ ArticulationHold

char ArticulationHold[5] = { 80, 100, 90, 90, 60 }

Definiert in Zeile 40 der Datei GIS_Head.cpp.

Wird benutzt von GisReadArtHead::Read().

◆ ArticulationOff

char ArticulationOff[5] = { 80, 80, 60, 127, 127 }

Definiert in Zeile 41 der Datei GIS_Head.cpp.

◆ backend_callbacks

mutabor::hidden::mutabor_callback_type mutabor::BoxClass::backend_callbacks
staticprotected

Definiert in Zeile 839 der Datei Box.h.

Wird benutzt von mutabor::initialize_box_data().

◆ bad

int bad = 0
static

Definiert in Zeile 43 der Datei GSP_File.cpp.

Wird benutzt von InFile::NewLine(), OpenFile() und ReadNewLine().

◆ bank_coarse

uint8_t mutabor::ChannelData::bank_coarse
protected

Definiert in Zeile 501 der Datei Device.h.

Wird benutzt von mutabor::ChannelData::program_change().

◆ bank_fine

uint8_t mutabor::ChannelData::bank_fine
protected

Definiert in Zeile 502 der Datei Device.h.

Wird benutzt von mutabor::ChannelData::program_change().

◆ bend

int mutabor::ChannelData::bend
protected

Definiert in Zeile 503 der Datei Device.h.

Wird benutzt von mutabor::ChannelData::MidiReset().

◆ box [1/5]

Box mutabor::BoxClass::ChangedCallback::box

Definiert in Zeile 226 der Datei Box.h.

◆ box [2/5]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
Box mutabor::TRouteClass< I, O, B >::box
protected

Definiert in Zeile 468 der Datei Route.h.

◆ box [3/5]

Box mutabor::BoxClass::BoxLock::box

Definiert in Zeile 789 der Datei Box.h.

◆ box [4/5]

mutabor_box_type* mutabor::BoxClass::box
protected

◆ box [5/5]

BoxClass* mutabor::BoxClass::set_callback::box
private

Definiert in Zeile 828 der Datei Box.h.

◆ boxid

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::boxid
protected

Definiert in Zeile 480 der Datei Route.h.

◆ boxList

BoxListType mutabor::BoxClass::boxList
staticprotected

Definiert in Zeile 811 der Datei Box.h.

Wird benutzt von mutaborGUI::BoxData::BoxData().

◆ Brackets

std::string Brackets = ""

Definiert in Zeile 56 der Datei GSP.cpp.

Wird benutzt von DoParse() und GspParse().

◆ callbacks

std::list<ChangedCallback *> mutabor::BoxClass::callbacks
protected

Definiert in Zeile 826 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::ExecuteCallbacks().

◆ channel

int mutabor::BoxClass::current_tone_entry::channel

Definiert in Zeile 499 der Datei Box.h.

◆ controller

controller_vector mutabor::ChannelData::controller
protected

◆ controller_changed

controller_vector mutabor::ChannelData::controller_changed
protected

Definiert in Zeile 496 der Datei Device.h.

◆ created

RouteFactory* mutabor::RouteFactory::FactoryAlreadySet::created

Definiert in Zeile 579 der Datei Route.h.

◆ Current

GisToken** Current

Definiert in Zeile 107 der Datei GIS.cpp.

◆ current_compile_callback

CompileCallback* mutabor::BoxClass::current_compile_callback
protected

◆ current_key_logic

int mutabor::BoxClass::current_key_logic
protected

Definiert in Zeile 824 der Datei Box.h.

Wird benutzt von mutaborGUI::BoxData::Destroy().

◆ current_key_tonesystem

int mutabor::BoxClass::current_key_tonesystem
protected

Definiert in Zeile 823 der Datei Box.h.

Wird benutzt von mutaborGUI::BoxData::Destroy().

◆ current_keys

current_keys_type mutabor::InputDeviceClass::current_keys
protected

Definiert in Zeile 1337 der Datei Device.h.

◆ current_logic

std::string mutabor::BoxClass::current_logic
protected

Definiert in Zeile 821 der Datei Box.h.

Wird benutzt von mutaborGUI::BoxData::Destroy().

◆ current_tonesystem

std::string mutabor::BoxClass::current_tonesystem
protected

Definiert in Zeile 822 der Datei Box.h.

Wird benutzt von mutaborGUI::BoxData::Destroy().

◆ CurrentLine [1/2]

std::string CurrentLine

◆ CurrentLine [2/2]

std::string CurrentLine

◆ CurrentPos [1/2]

size_t CurrentPos

◆ CurrentPos [2/2]

size_t CurrentPos

◆ data_is_rpn

bool mutabor::ChannelData::data_is_rpn
protected

Definiert in Zeile 499 der Datei Device.h.

◆ debugcount

int debugcount = 0

Definiert in Zeile 117 der Datei GIS.cpp.

◆ debugmutex

Mutex debugmutex

Definiert in Zeile 90 der Datei debug.cpp.

Wird benutzt von mutabor_debug_lock() und mutabor_debug_unlock().

◆ DelimitChars

char DelimitChars[] = "{}[]()"

Definiert in Zeile 74 der Datei GSP.cpp.

Wird benutzt von DoParse().

◆ device

InputDevice mutabor::InputDeviceClass::current_keys_type::entry::device

Definiert in Zeile 1031 der Datei Device.h.

◆ deviceList

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
CommonTypedDeviceAPI< T, P, L >::listtype mutabor::CommonTypedDeviceAPI< T, P, L >::deviceList
staticprotected

Definiert in Zeile 697 der Datei Device.h.

◆ DevTypeName

const std::string mutabor::DevTypeName
Initialisierung:
=
{
_mutN("Unknown"),
_mutN("Midi Port"),
_mutN("Midi File"),
_mutN("GUIDO .gmn File")
}
#define _mutN(x)
Definition: Defs.h:137

Definiert in Zeile 345 der Datei Route.cpp.

Wird benutzt von mutabor::ScopedRoute::operator=().

◆ dirty

bool mutabor::Device::dirty
protected

Definiert in Zeile 653 der Datei Device.h.

◆ duration

frac duration
static

◆ Eof [1/2]

int Eof

Definiert in Zeile 38 der Datei GSP_File.cpp.

Wird benutzt von DoParse(), GetSep(), GspParse(), ReadNewLine() und ReadParaStr().

◆ Eof [2/2]

int Eof

Definiert in Zeile 38 der Datei GSP_File.cpp.

Wird benutzt von DoParse(), GetSep(), GspParse(), ReadNewLine() und ReadParaStr().

◆ factories [1/2]

BoxFactory::factorylist mutabor::BoxFactory::factories
staticprotected

Definiert in Zeile 962 der Datei Box.h.

◆ factories [2/2]

DeviceFactory::factorylist mutabor::DeviceFactory::factories
staticprotected

Definiert in Zeile 1477 der Datei Device.h.

Wird benutzt von mutabor::InputDeviceClass::operator std::string().

◆ factory

RouteFactory * mutabor::RouteFactory::factory
staticprotected

Pointer to the current factory.

Definiert in Zeile 748 der Datei Route.h.

Wird benutzt von mutabor::RouteFactory::Create() und mutabor::RouteFactory::RouteFactory().

◆ File

boost::filesystem::ifstream* File

Definiert in Zeile 40 der Datei GSP_File.cpp.

Wird benutzt von MisTrack::AddNoteOn(), CloseFile(), OpenFile() und ReadNewLine().

◆ first_unchanged

size_t mutabor::ChannelData::first_unchanged
protected

Definiert in Zeile 497 der Datei Device.h.

◆ flag

enum { ... } mutabor::box_support::tone_entry::flag

◆ flags

enum { ... } mutabor::BoxClass::logic_entry::flags

◆ GisReadArtDummy

GisReadArtProceed GisReadArtDummy

◆ GisReadDummy

GisReadProceed GisReadDummy

◆ GspCurrentLineNr [1/2]

int GspCurrentLineNr

Definiert in Zeile 28 der Datei GSP.cpp.

Wird benutzt von DoError(), GetSep(), GspParse(), ReadNewLine() und SavePos().

◆ GspCurrentLineNr [2/2]

int GspCurrentLineNr

Definiert in Zeile 28 der Datei GSP.cpp.

Wird benutzt von DoError(), GetSep(), GspParse(), ReadNewLine() und SavePos().

◆ GspError [1/2]

int GspError

◆ GspError [2/2]

int GspError

◆ GspErrorLine [1/2]

std::string GspErrorLine

Definiert in Zeile 31 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse() und main().

◆ GspErrorLine [2/2]

std::string GspErrorLine

Definiert in Zeile 31 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse() und main().

◆ GspErrorLineNr [1/2]

int GspErrorLineNr

Definiert in Zeile 29 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

◆ GspErrorLineNr [2/2]

int GspErrorLineNr

Definiert in Zeile 29 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

◆ GspErrorPos [1/2]

int GspErrorPos

Definiert in Zeile 30 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

◆ GspErrorPos [2/2]

int GspErrorPos

Definiert in Zeile 30 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

◆ GspErrorText [1/2]

const char* GspErrorText[]

Definiert in Zeile 31 der Datei GSP_Err.cpp.

Wird benutzt von GetInFile(), main() und mutabor::InputGis::Open().

◆ GspErrorText [2/2]

const char* GspErrorText[]

Definiert in Zeile 31 der Datei GSP_Err.cpp.

Wird benutzt von GetInFile(), main() und mutabor::InputGis::Open().

◆ id [1/3]

size_t mutabor::BoxClass::current_tone_entry::id

Definiert in Zeile 498 der Datei Box.h.

◆ id [2/3]

int mutabor::BoxFactory::FactoryNotFound::id

Definiert in Zeile 887 der Datei Box.h.

◆ id [3/3]

int mutabor::DeviceFactory::FactoryNotFound::id

Definiert in Zeile 1372 der Datei Device.h.

◆ IFrom

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::IFrom
protected

Definiert in Zeile 484 der Datei Route.h.

◆ IGNORE_UNIQUE_ID

const size_t mutabor::ChannelData::IGNORE_UNIQUE_ID = ULONG_MAX
static

◆ In

template<class I = InputDevice, class O = OutputDevice, class B = Box>
InputDevice mutabor::TRouteClass< I, O, B >::In
protected

Definiert in Zeile 467 der Datei Route.h.

◆ InDevChanged

char mutabor::InDevChanged

◆ index

int mutabor::BoxClass::current_tone_entry::index

Definiert in Zeile 497 der Datei Box.h.

◆ inputid

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::inputid
protected

Definiert in Zeile 478 der Datei Route.h.

◆ isOpen

bool mutabor::Device::isOpen
protected

◆ ITo

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::ITo
protected

Definiert in Zeile 484 der Datei Route.h.

◆ key [1/2]

int mutabor::BoxClass::logic_entry::key

Definiert in Zeile 479 der Datei Box.h.

◆ key [2/2]

int mutabor::InputDeviceClass::current_keys_type::entry::key

◆ Komma

char Komma

Definiert in Zeile 54 der Datei GSP.cpp.

Wird benutzt von DoParse() und GetSep().

◆ last_was_stop

bool mutabor::InputDeviceClass::last_was_stop = true
staticprotected

Definiert in Zeile 1338 der Datei Device.h.

Wird benutzt von mutabor::OutputDeviceClass::operator std::string().

◆ LastDuration

mutabor::frac LastDuration

Definiert in Zeile 114 der Datei GIS.cpp.

◆ LastOctave

int LastOctave

Definiert in Zeile 113 der Datei GIS.cpp.

Wird benutzt von GisNote::GetKey().

◆ LastOpenBracket

GisToken * LastOpenBracket

Definiert in Zeile 107 der Datei GIS.cpp.

Wird benutzt von UnRavel().

◆ LastOpenRange

GisTagBegin* LastOpenRange

Definiert in Zeile 108 der Datei GIS.cpp.

Wird benutzt von BeginRange().

◆ LastPara

GisToken * LastPara

Definiert in Zeile 112 der Datei GIS.cpp.

◆ LastTag

char LastTag

Definiert in Zeile 63 der Datei GSP.cpp.

Wird benutzt von DoParse(), GspParse() und ReadTag().

◆ logic_timing

int mutabor::BoxClass::logic_timing
protected

Definiert in Zeile 841 der Datei Box.h.

◆ logic_timing_mutex

Mutex mutabor::BoxClass::logic_timing_mutex
protected

Definiert in Zeile 842 der Datei Box.h.

◆ loop_timeout

mutint64 mutabor::BoxClass::loop_timeout
protected

Definiert in Zeile 843 der Datei Box.h.

◆ looped

bool mutabor::ChannelData::looped
protected

Definiert in Zeile 498 der Datei Device.h.

◆ loopguard

watchdog<Box>* mutabor::BoxClass::loopguard
protected

Definiert in Zeile 844 der Datei Box.h.

◆ map

map_type mutabor::InputDeviceClass::current_keys_type::map
protected

Definiert in Zeile 1125 der Datei Device.h.

◆ message_ [1/2]

std::string mutabor::BoxFactory::FactoryNotFound::message_

Definiert in Zeile 888 der Datei Box.h.

◆ message_ [2/2]

std::string mutabor::DeviceFactory::FactoryNotFound::message_

Definiert in Zeile 1373 der Datei Device.h.

◆ minus

bool minus

Definiert in Zeile 279 der Datei GSP.cpp.

Wird benutzt von ReadLong() und ReadParaNumber().

◆ Mode

enum MutaborModeType mutabor::Device::Mode
protected

◆ mutex

Mutex mutabor::BoxClass::mutex
protected

Definiert in Zeile 840 der Datei Box.h.

Wird benutzt von mutaborGUI::BoxData::DoOpen().

◆ name

std::string mutabor::BoxClass::logic_entry::name

Definiert in Zeile 477 der Datei Box.h.

Wird benutzt von mutabor::append_triggers().

◆ Name

std::string mutabor::Device::Name
protected

◆ nextboxid

int mutabor::BoxClass::nextboxid = Box0
staticprotected

Definiert in Zeile 812 der Datei Box.h.

◆ NumberLength

int NumberLength

Definiert in Zeile 55 der Datei GSP.cpp.

Wird benutzt von ReadLong() und ReadParaNumber().

◆ octave

int octave
static

Definiert in Zeile 66 der Datei GSP.cpp.

Wird benutzt von GisNote::GisNote(), GspParse(), Note(), ReadNote() und GisComma::ToString().

◆ OFrom

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::OFrom
protected

Definiert in Zeile 486 der Datei Route.h.

◆ old

RouteFactory* mutabor::RouteFactory::FactoryAlreadySet::old

Definiert in Zeile 578 der Datei Route.h.

◆ ONoDrum

template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::ONoDrum
protected

Definiert in Zeile 487 der Datei Route.h.

◆ open

bool mutabor::BoxClass::open
protected

Definiert in Zeile 820 der Datei Box.h.

◆ OTo

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::OTo
protected

Definiert in Zeile 486 der Datei Route.h.

◆ Out

template<class I = InputDevice, class O = OutputDevice, class B = Box>
OutputDevice mutabor::TRouteClass< I, O, B >::Out
protected

Definiert in Zeile 466 der Datei Route.h.

◆ outputid

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::outputid
protected

Definiert in Zeile 479 der Datei Route.h.

◆ Para

GisToken* Para

Definiert in Zeile 112 der Datei GIS.cpp.

Wird benutzt von GisTagBegin::Copy(), GisTag::GetPara(), GisTag::GetParaType(), UnRavel() und GisTag::~GisTag().

◆ ParaMode

char ParaMode

Definiert in Zeile 53 der Datei GSP.cpp.

Wird benutzt von DoParse(), GetSep() und ReadTag().

◆ period

double mutabor::box_support::tone_system::period

◆ pitch

double mutabor::box_support::tone_entry::pitch

Definiert in Zeile 59 der Datei box_support.h.

◆ PossibleErrorLine

std::string PossibleErrorLine

Definiert in Zeile 37 der Datei GSP.cpp.

Wird benutzt von CheckError() und SavePos().

◆ PossibleErrorLineNr

int PossibleErrorLineNr

Definiert in Zeile 35 der Datei GSP.cpp.

Wird benutzt von CheckError() und SavePos().

◆ PossibleErrorPos

int PossibleErrorPos

Definiert in Zeile 36 der Datei GSP.cpp.

Wird benutzt von CheckError() und SavePos().

◆ REFPTR_INTERFACE [1/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::REFPTR_INTERFACE
protected

Definiert in Zeile 542 der Datei Route.h.

◆ REFPTR_INTERFACE [2/3]

template<class T, class P = boost::intrusive_ptr<T>, class L = cow_container<std::vector <P> >>
mutabor::CommonTypedDeviceAPI< T, P, L >::REFPTR_INTERFACE
private

Definiert in Zeile 689 der Datei Device.h.

◆ REFPTR_INTERFACE [3/3]

mutabor::BoxClass::REFPTR_INTERFACE
private

Definiert in Zeile 878 der Datei Box.h.

◆ Root

GisToken* Root

Definiert in Zeile 106 der Datei GIS.cpp.

Wird benutzt von GisParse().

◆ route [1/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
Route mutabor::TRouteClass< I, O, B >::NoOutputDevice::route

Definiert in Zeile 130 der Datei Route.h.

◆ route [2/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
Route mutabor::TRouteClass< I, O, B >::NoInputDevice::route

Definiert in Zeile 139 der Datei Route.h.

◆ route [3/3]

Route mutabor::InputDeviceClass::current_keys_type::entry::route

◆ routefile_id [1/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::routefile_id
protected

Definiert in Zeile 477 der Datei Route.h.

◆ routefile_id [2/3]

int mutabor::Device::routefile_id
protected

Definiert in Zeile 651 der Datei Device.h.

◆ routefile_id [3/3]

int mutabor::BoxClass::routefile_id
protected

Definiert in Zeile 818 der Datei Box.h.

◆ routeList

template<class I = InputDevice, class O = OutputDevice, class B = Box>
TRouteClass< I, O, B >::routeListType mutabor::TRouteClass< I, O, B >::routeList
staticprotected

Definiert in Zeile 475 der Datei Route.h.

◆ routes [1/2]

routeListType mutabor::Device::routes
protected

Definiert in Zeile 656 der Datei Device.h.

Wird benutzt von mutabor::InputGis::ProceedRoute().

◆ routes [2/2]

routeListType mutabor::BoxClass::routes
protected

Definiert in Zeile 819 der Datei Box.h.

◆ RTName

const std::string mutabor::RTName
Initialisierung:
=
{
"ALL", "ELSE", "CHANNEL", "STAFF"
}

Definiert in Zeile 49 der Datei Route.cpp.

Wird benutzt von compat30::SaveRoutes() und compat30::Str2RT().

◆ Sep [1/2]

std::string Sep = ""

◆ Sep [2/2]

◆ SepChars

char SepChars[] = " \t\r\n"

Definiert in Zeile 73 der Datei GSP.cpp.

Wird benutzt von GetSep().

◆ session_id [1/3]

template<class I = InputDevice, class O = OutputDevice, class B = Box>
idtype<TRouteClass<I,O> > mutabor::TRouteClass< I, O, B >::session_id
protected

Definiert in Zeile 476 der Datei Route.h.

◆ session_id [2/3]

idtype<Device> mutabor::Device::session_id
protected

Id used during runtime;.

Definiert in Zeile 650 der Datei Device.h.

◆ session_id [3/3]

idtype<BoxClass> mutabor::BoxClass::session_id
protected

Definiert in Zeile 817 der Datei Box.h.

◆ settings

const ChannelData* mutabor::InputDeviceClass::current_keys_type::entry::settings

Definiert in Zeile 1032 der Datei Device.h.

◆ Sound

int mutabor::ChannelData::Sound
protected

◆ startTuning

std::string mutabor::BoxClass::logic_entry::startTuning

Definiert in Zeile 478 der Datei Box.h.

◆ t

const char* t

Definiert in Zeile 250 der Datei thread.h.

◆ TagMode

char TagMode

◆ TagName

std::string TagName

Definiert in Zeile 110 der Datei GIS.cpp.

Wird benutzt von BeginRange(), BuildTag(), GisParse(), Tag() und UnRavel().

◆ Tags [1/2]

const char* Tags[NTAGS]

Definiert in Zeile 40 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

◆ Tags [2/2]

const char* Tags[NTAGS]

Definiert in Zeile 40 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

◆ TagSep

std::string TagSep

Definiert in Zeile 111 der Datei GIS.cpp.

Wird benutzt von BeginParameter(), BeginRange(), BuildTag(), EndParameter(), GisParse() und Tag().

◆ TagShorts [1/2]

const char* TagShorts[NTAGSHORTS]

Definiert in Zeile 96 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

◆ TagShorts [2/2]

const char* TagShorts[NTAGSHORTS]
Initialisierung:
=
{
(""),
("i"),
("sl"),
("bm"),
("t"),
("|")
}

Definiert in Zeile 96 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

◆ tones

tone_list mutabor::box_support::tone_system::tones

◆ trigger

struct any_trigger mutabor::BoxClass::logic_entry::trigger

Definiert in Zeile 480 der Datei Box.h.

◆ Type

template<class I = InputDevice, class O = OutputDevice, class B = Box>
RouteType mutabor::TRouteClass< I, O, B >::Type
protected

Definiert in Zeile 483 der Datei Route.h.

◆ u

const char const char* u

Definiert in Zeile 250 der Datei thread.h.

◆ unique_id

size_t mutabor::InputDeviceClass::current_keys_type::entry::unique_id

◆ updateflags

unsigned int mutabor::BoxClass::updateflags
protected

Definiert in Zeile 825 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::UpdateCallback().

◆ userdata [1/2]

void* mutabor::Device::userdata
private

Definiert in Zeile 679 der Datei Device.h.

◆ userdata [2/2]

void* mutabor::InputDeviceClass::current_keys_type::entry::userdata

Definiert in Zeile 1033 der Datei Device.h.

◆ velocity

int mutabor::InputDeviceClass::current_keys_type::entry::velocity

Definiert in Zeile 1029 der Datei Device.h.

Freundbeziehungen

◆ ::mutaborGUI::BoxData

friend class ::mutaborGUI::BoxData
friend

Definiert in Zeile 813 der Datei Box.h.

◆ ::mutaborGUI::GUIInputDeviceBase

friend class ::mutaborGUI::GUIInputDeviceBase
friend

Definiert in Zeile 646 der Datei Device.h.

◆ ::mutaborGUI::GUIOutputDeviceBase

friend class ::mutaborGUI::GUIOutputDeviceBase
friend
Noch zu erledigen:
lift this restrection afer GUI is working again

Definiert in Zeile 645 der Datei Device.h.

◆ BoxFactory

friend class BoxFactory
friend

Definiert in Zeile 814 der Datei Box.h.

Wird benutzt von mutaborGUI::GUIBoxFactory::CreateBoxShape().

◆ DeviceFactory [1/2]

friend class DeviceFactory
friend

Definiert in Zeile 845 der Datei Device.h.

Wird benutzt von mutabor::CommonFileInputDevice::CommonFileInputDevice().

◆ DeviceFactory [2/2]

friend class DeviceFactory
friend

Definiert in Zeile 1023 der Datei Device.h.

◆ initialize_box_data

void initialize_box_data ( )
friend

Definiert in Zeile 1107 der Datei Box.cpp.

1108  {
1110  }
static mutabor::hidden::mutabor_callback_type backend_callbacks
Definition: Box.h:839
mutabor_callback_type * mutabor_set_callbacks(mutabor_callback_type *callbacks)
Set the callbacks for the mutabor backend.
Definition: Execute.cpp:117

◆ mutaborGUI::GUIRouteBase

template<class I = InputDevice, class O = OutputDevice, class B = Box>
friend class mutaborGUI::GUIRouteBase
friend
Noch zu erledigen:
remove this reference after GUI is working again

Definiert in Zeile 112 der Datei Route.h.

◆ RouteFactory

template<class I = InputDevice, class O = OutputDevice, class B = Box>
friend class RouteFactory
friend

Definiert in Zeile 110 der Datei Route.h.


Erzeugt am Sam Sep 15 2018 14:57:55 für Mutabor von doxygen 1.8.13